<!DOCTYPE html><html class="theme-next muse use-motion" lang="zh-CN"><head><meta name="generator" content="Hexo 3.8.0"><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#222"><script src="//fastly.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script><link href="/lib/pace/pace-theme-corner-indicator.min.css?v=1.0.2" rel="stylesheet"><meta name="google-site-verification" content="sDeZZSmv4NPbU3sXi1IL5l8PiZt1wVqR5EKUsxOjruY"><link href="https://fastly.jsdelivr.net/npm/@fancyapps/fancybox@3.2.5/dist/jquery.fancybox.min.css" rel="stylesheet" type="text/css"><link href="//fonts.googleapis.com/css?family=Noto Serif SC:300,300italic,400,400italic,700,700italic|Noto Serif SC:300,300italic,400,400italic,700,700italic|Roboto Mono:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css"><link href="//fastly.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"><link href="/css/main.css?v=6.6.0" rel="stylesheet" type="text/css"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=6.6.0"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon.png?v=6.6.0"><link rel="icon" type="image/png" sizes="16x16" href="/images/favicon.png?v=6.6.0"><link rel="mask-icon" href="/images/logo.svg?v=6.6.0" color="#222"><script id="hexo.configurations">var NexT=window.NexT||{},CONFIG={root:"/",scheme:"Muse",version:"6.6.0",sidebar:{position:"left",display:"hide",offset:12,b2t:!1,scrollpercent:!0,onmobile:!0},fancybox:!0,fastclick:!1,lazyload:!1,tabs:!0,motion:{enable:!0,async:!1,transition:{post_block:"fadeIn",post_header:"slideDownIn",post_body:"slideDownIn",coll_header:"slideLeftIn",sidebar:"slideUpIn"}},algolia:{applicationID:"",apiKey:"",indexName:"",hits:{per_page:10},labels:{input_placeholder:"Search for Posts",hits_empty:"We didn't find any results for the search: ${query}",hits_stats:"${hits} results found in ${time} ms"}}}</script><meta name="description" content="教程更新于 2020.3.2, 基于 OpenCore 0.5.6 官方版本由于个人能力有限, 教程中难免会有些疏漏, 这里推荐大家在参阅本教程的同时也阅读以下资料:OpenCore 官方文档 – OpenCore 最权威的资料, 没有之一!!!xjn‘s Blog – xjn 大佬的博客, 对台式机非常友好的教程, 内存管理写的非常详细OC-little – 宪武大佬的 OC ACPI 热补丁示"><meta name="keywords" content="教程,OC-little,bootloader,opencore"><meta property="og:type" content="article"><meta property="og:title" content="精解OpenCore"><meta property="og:url" content="https://blog.daliansky.net/OpenCore-BootLoader.html"><meta property="og:site_name" content="黑果小兵的部落阁"><meta property="og:description" content="教程更新于 2020.3.2, 基于 OpenCore 0.5.6 官方版本由于个人能力有限, 教程中难免会有些疏漏, 这里推荐大家在参阅本教程的同时也阅读以下资料:OpenCore 官方文档 – OpenCore 最权威的资料, 没有之一!!!xjn‘s Blog – xjn 大佬的博客, 对台式机非常友好的教程, 内存管理写的非常详细OC-little – 宪武大佬的 OC ACPI 热补丁示"><meta property="og:locale" content="zh-CN"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/OpenCore.png"><meta property="og:image" content="https://img.shields.io/github/v/release/williambj1/OpenCore-Factory?color=orange&include_prereleases&label=Release"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/FormatUSB.png"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/EmptyEFI.png"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/Structure.png"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/StructureFilled.png"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/ConfigSample.png"><meta property="og:image" content="https://pan.daliansky.net/d/blog/OpenCore/Success.png"><meta property="og:image" content="https://img.shields.io/badge/OpenCore%20UEFI%20Drivers-%E7%82%B9%E5%87%BB%E4%B8%8B%E8%BD%BD-blue"><meta property="og:updated_time" content="2023-09-20T01:55:32.456Z"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="精解OpenCore"><meta name="twitter:description" content="教程更新于 2020.3.2, 基于 OpenCore 0.5.6 官方版本由于个人能力有限, 教程中难免会有些疏漏, 这里推荐大家在参阅本教程的同时也阅读以下资料:OpenCore 官方文档 – OpenCore 最权威的资料, 没有之一!!!xjn‘s Blog – xjn 大佬的博客, 对台式机非常友好的教程, 内存管理写的非常详细OC-little – 宪武大佬的 OC ACPI 热补丁示"><meta name="twitter:image" content="https://pan.daliansky.net/d/blog/OpenCore/OpenCore.png"><link rel="alternate" href="/atom.xml" title="黑果小兵的部落阁" type="application/atom+xml"><link rel="canonical" href="https://blog.daliansky.net/OpenCore-BootLoader.html"><script id="page.configurations">CONFIG.page={sidebar:""}</script><title>精解OpenCore | 黑果小兵的部落阁</title><noscript><style>.sidebar-inner,.use-motion .brand,.use-motion .collection-title,.use-motion .comments,.use-motion .menu-item,.use-motion .motion-element,.use-motion .pagination,.use-motion .post-block,.use-motion .post-body,.use-motion .post-header{opacity:initial}.use-motion .logo,.use-motion .site-subtitle,.use-motion .site-title{opacity:initial;top:initial}.use-motion .logo-line-before i{left:initial}.use-motion .logo-line-after i{right:initial}</style></noscript></head><body itemscope itemtype="http://schema.org/WebPage" lang="zh-CN"><div class="container sidebar-position-left page-post-detail"><div class="headband"></div><header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="header-inner"><div class="site-brand-wrapper"><div class="site-meta"><div class="custom-logo-site-title"><a href="/" class="brand" rel="start"><span class="logo-line-before"><i></i></span> <span class="site-title">黑果小兵的部落阁</span> <span class="logo-line-after"><i></i></span></a></div><p class="site-subtitle">Hackintosh安装镜像、教程及经验分享</p></div><div class="site-nav-toggle"><button aria-label="切换导航栏"><span class="btn-bar"></span> <span class="btn-bar"></span> <span class="btn-bar"></span></button></div></div><nav class="site-nav"><ul id="menu" class="menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="menu-item-icon fa fa-fw fa-home"></i><br>首页</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="menu-item-icon fa fa-fw fa-archive"></i><br>归档</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="menu-item-icon fa fa-fw fa-th"></i><br>分类</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="menu-item-icon fa fa-fw fa-tags"></i><br>标签</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="menu-item-icon fa fa-fw fa-user"></i><br>关于</a></li><li class="menu-item menu-item-search"><a href="javascript:;" class="popup-trigger"><i class="menu-item-icon fa fa-search fa-fw"></i><br>搜索</a></li></ul><div class="site-search"><div class="popup search-popup local-search-popup"><div class="local-search-header clearfix"><span class="search-icon"><i class="fa fa-search"></i> </span><span class="popup-btn-close"><i class="fa fa-times-circle"></i></span><div class="local-search-input-wrapper"><input autocomplete="off" placeholder="搜索..." spellcheck="false" type="text" id="local-search-input"></div></div><div id="local-search-result"></div></div></div></nav></div></header><a href="https://github.com/daliansky" class="github-corner" title="Follow me on GitHub" aria-label="Follow me on GitHub" rel="noopener" target="_blank"><svg width="80" height="80" viewbox="0 0 250 250" style="fill:#222;color:#fff;position:absolute;top:0;border:0;right:0" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"/><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin:130px 106px" class="octo-arm"/><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"/></svg></a><main id="main" class="main"><div class="main-inner"><div class="content-wrap"><div id="content" class="content"><div id="posts" class="posts-expand"><div class="reading-progress-bar"></div><article class="post post-type-normal" itemscope itemtype="http://schema.org/Article"><div class="post-block"><link itemprop="mainEntityOfPage" href="https://blog.daliansky.net/OpenCore-BootLoader.html"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="name" content="黑果小兵"><meta itemprop="description" content="黑果小兵,daliansky,blog.daliansky.net,macOS,Hackintosh,黑苹果,linux"><meta itemprop="image" content="/images/avatar.png"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="黑果小兵的部落阁"></span><header class="post-header"><h1 class="post-title" itemprop="name headline">精解OpenCore</h1><div class="post-meta"><span class="post-time"><span class="post-meta-item-icon"><i class="fa fa-calendar-o"></i> </span><time title="创建时间：2019-06-11 23:06:07" itemprop="dateCreated datePublished" datetime="2019-06-11T23:06:07+08:00">2019-06-11</time> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-calendar-check-o"></i> </span><time title="修改时间：2023-09-20 09:55:32" itemprop="dateModified" datetime="2023-09-20T09:55:32+08:00">2023-09-20</time> </span><span class="post-category"><span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-folder-o"></i> </span><span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/教程/" itemprop="url" rel="index"><span itemprop="name">教程</span></a></span> </span><span class="post-meta-divider">|</span> <span class="post-meta-item-icon" title="阅读次数"><i class="fa fa-eye"></i> <span class="busuanzi-value" id="busuanzi_value_page_pv"></span></span><div class="post-symbolscount"><span class="post-meta-item-icon"><i class="fa fa-file-word-o"></i> </span><span title="本文字数">33k</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-clock-o"></i> </span><span title="阅读时长">1:01</span></div></div></header><div class="post-body" itemprop="articleBody"><div><div><div class="post-gallery"></div></div></div><blockquote><p>教程更新于 <code>2020.3.2</code>, 基于 <code>OpenCore 0.5.6</code> <strong>官方版本</strong></p></blockquote><p><strong>由于个人能力有限, 教程中难免会有些疏漏, 这里推荐大家在参阅本教程的同时也阅读以下资料:</strong></p><ol><li><a href="https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf" target="_blank" rel="noopener">OpenCore 官方文档</a> – OpenCore 最权威的资料, 没有之一!!!</li><li><a href="https://blog.xjn819.com/?p=543" target="_blank" rel="noopener">xjn‘s Blog</a> – xjn 大佬的博客, 对台式机非常友好的教程, 内存管理写的非常详细</li><li><a href="https://github.com/daliansky/OC-little" target="_blank" rel="noopener">OC-little</a> – 宪武大佬的 OC ACPI 热补丁示例</li><li><a href="https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/" target="_blank" rel="noopener">Opencore Vanilla Desktop Guide</a></li></ol><p align="center"><img src="https://pan.daliansky.net/d/blog/OpenCore/OpenCore.png"></p><h2 id="什么是-opencore"><a class="markdownIt-Anchor" href="#什么是-opencore"></a> 什么是 OpenCore</h2><p>OpenCore<code>(简称 OC)</code> 是一个着眼于未来开源的引导工具, 最初诞生于 HermitCrabs 实验室, 现在接手于 Acidanthera, 其目的是创造一个更加严谨的模组化的轻量引导系统。尽管 OpenCore 的主要用途是黑苹果, 它也支持其它操作系统的引导。</p><p>OpenCore 现在处于公测 Beta 阶段, 引导相关功能也已非常稳定, 喜欢折腾的朋友现在已经是动手的时机了。</p><p>这个教程只能作为你探索的起点。请仔细阅读并时刻牢记你的硬件可能有不同的配置要求。</p><h2 id="为什么选择-opencore"><a class="markdownIt-Anchor" href="#为什么选择-opencore"></a> 为什么选择 OpenCore</h2><ol><li>从 2019 年 9 月以后, Acidanthera 开发的内核驱动 (Lilu, AppleALC 等等) <strong>「不再会」</strong> 在 Clover 上做兼容性测试</li><li>OpenCore 更加注重系统的安全性, 提供对 OpenCore 自身引导文件对加密, 同时对文件保险箱 (FileVault) 有更强大的支持, 在未来会支持 UEFI 安全启动</li><li>OpenCore 启动 FileVault (硬盘保险箱) 加密的分区速度远超 Clover</li><li>OpenCore 支持基于 <code>boot.efi</code> 的原生开机快捷键支持</li><li>OpenCore 使用更加先进的方法注入第三方内核扩展驱动 (Kext) 且与此同时不会破坏系统完整性保护</li><li>OpenCore 通过读取启动磁盘设置的 NVRAM 变量, 可以像白苹果一样支持在设置的启动磁盘切换默认引导项</li><li>支持给其它 .efi 驱动或引导工具加入参数</li><li>大量 Acidanthera 维护的独立 <a href="#%E9%99%84%E5%BD%952-uefi-%E9%A9%B1%E5%8A%A8-efi-%E5%8F%8A%E5%85%B6%E7%94%A8%E9%80%94">UEFI 驱动</a> 被合并入 OpenCore, 未来的开发直接与 OpenCore 绑定, <strong>且不再支持 Clover</strong></li></ol><h3 id="opencore-常见疑问"><a class="markdownIt-Anchor" href="#opencore-常见疑问"></a> OpenCore 常见疑问</h3><ol><li><p><strong>OpenCore 不自带精美的主题, 以后会添加吗?</strong></p><ul><li><strong>OpenCore 自带的 GUI 仅用于 debug, 设计初衷是在正常使用的时像白苹果一样隐藏。</strong></li><li>其实 OpenCore 已经提供了大量可以绕开 GUI 的功能, 将 <code>ShowPicker</code> 设置为 <code>NO</code> 隐藏菜单之后, 可以通过系统自带的启动磁盘设置来切换默认系统, 用苹果原生快捷键来重置 NVRAM 和添加引导表示符, 需要其它功能的时候可以随时按 <code>ESC/Option</code> 调出, <strong>主题存在的意义不大</strong></li><li>N.D.K 为官方 OpenCore 开发了一个独立的 GUI 插件, 可以在 <a href="https://github.com/n-d-k/NdkBootPicker/releases/latest" target="_blank" rel="noopener">这里下载</a>, 食用方法请阅读项目的 <a href="https://github.com/n-d-k/NdkBootPicker/blob/master/README.md" target="_blank" rel="noopener">Readme</a></li></ul></li><li><p><strong>OpenCore 为什么不会为其它操作系统忽略 ACPI 补丁?</strong></p><p>真正正确的 ACPI (DSDT/SSDT) 应当适用于所有的操作系统, 单独为一个操作系统制作 ACPI 是不合理的, 因此 OpenCore 基于 ACPI 标准, 不会在 ACPI 上区别对待操作系统, 如果想学习怎样使用和制作通用于所有操作系统的 ACPI 补丁, 可以参考 <a href="https://github.com/daliansky/OC-little" target="_blank" rel="noopener">OC-little</a></p></li><li><p><strong>OpenCore 的 MOD 版本和官方版本有何不同?</strong></p><p>OpenCore MOD 是 N.D.K 的一个 Fork, 里面加入了不注入除了 macOS 之外的其它操作系统的功能, 可以看作是一个自带主题的懒人版。但是除非在个别极端情况下主板的固件真的不走规范, 正确配置原版 OpenCore 和 ACPI 是不会造成无法引导其它操作系统的情况的。本教程鼓励正确配置 OpenCore, 因此基于 <strong>原版 OpenCore</strong> 编写, 且 <strong>「不推荐」</strong> 使用 MOD 版本来掩盖自身的配置问题。</p></li><li><p><strong>OpenCore 的配置为什么看起来这复杂?</strong></p><ul><li>OpenCore 为了提高兼容性, 为用户开放了更多底层的 Quirk</li><li>OpenCore 现阶段没有可用的非常直观的 GUI 编辑器</li></ul><div class="note success"><p>换位思考, 如果用 Xcode 来编辑 Clover 安装包内自带的 Config 样本, 显然 OpenCore 会更简单。OpenCore 很多功能都有且只有一处设置, 但是 Clover 有大量等效组合互相干扰。</p></div></li></ol><h2 id="配置-opencore"><a class="markdownIt-Anchor" href="#配置-opencore"></a> 配置 OpenCore</h2><p>讲了这么多, 终于到真正动手的环节了</p><blockquote><p>本文较长, 建议配合博客右下角的目录阅读</p></blockquote><h3 id="准备工作"><a class="markdownIt-Anchor" href="#准备工作"></a> 准备工作</h3><p>我们先来做些简单的准备工作</p><h4 id="推荐-bios-设置"><a class="markdownIt-Anchor" href="#推荐-bios-设置"></a> 推荐 BIOS 设置</h4><ul><li><strong>禁用:</strong></li></ul><table><thead><tr><th style="text-align:center">英文</th><th style="text-align:center">中文</th></tr></thead><tbody><tr><td style="text-align:center">Fast Boot</td><td style="text-align:center">快速启动</td></tr><tr><td style="text-align:center">CFG Lock (MSR 0xE2 write protection)</td><td style="text-align:center">CFG 锁 (MSR 0xE2 写入保护)</td></tr><tr><td style="text-align:center">VT-d</td><td style="text-align:center"><a href="https://zhidao.baidu.com/question/495526512.html" target="_blank" rel="noopener">VT-d</a></td></tr><tr><td style="text-align:center">CSM</td><td style="text-align:center">兼容性支持模块</td></tr><tr><td style="text-align:center">Intel SGX</td><td style="text-align:center">Intel SGX</td></tr></tbody></table><hr><ul><li><strong>启用:</strong></li></ul><table><thead><tr><th style="text-align:center">英文</th><th style="text-align:center">中文</th></tr></thead><tbody><tr><td style="text-align:center">VT-x</td><td style="text-align:center"><a href="https://zhidao.baidu.com/question/495526512.html" target="_blank" rel="noopener">VT-x</a></td></tr><tr><td style="text-align:center">Above 4G decoding</td><td style="text-align:center">大于 4G 地址空间解码</td></tr><tr><td style="text-align:center">Hyper Threading</td><td style="text-align:center">处理器超线程</td></tr><tr><td style="text-align:center">Execute Disable Bit</td><td style="text-align:center">执行禁止位</td></tr><tr><td style="text-align:center">EHCI/XHCI Hand-off</td><td style="text-align:center">接手 EHCI/XHCI 控制</td></tr><tr><td style="text-align:center">OS type: Windows 8.1/10</td><td style="text-align:center">操作系统类型: Windows 8.1/10</td></tr><tr><td style="text-align:center">Legacy RTC Device</td><td style="text-align:center">传统 RTC 设备</td></tr></tbody></table><blockquote><p>将 操作系统类型设置为 <code>Windows 8.1/10</code> 是因为部分主板在 <code>Other</code> 模式下会将系统认作是 Windows 7 从而禁用 UEFI 的某些功能并开启 CSM, 200 系及以后的主板理论上不存在这个问题</p></blockquote><hr><h4 id="下载如下文件"><a class="markdownIt-Anchor" href="#下载如下文件"></a> 下载如下文件</h4><ul><li><p><a href="https://github.com/acidanthera/OpenCorePkg/releases" target="_blank" rel="noopener">OpenCorePkg</a> (建议从 Acidanthera 的官方 Sample 开始构建, 并使用 <strong>Debug</strong> 版本)</p><blockquote><p><a href="https://github.com/williambj1/OpenCore-Factory/blob/master/README_zh-Hans.md" target="_blank" rel="noopener">OpenCore-Factory</a> 提供连续的源码自动编译, 喜欢尝鲜的朋友可以下载, 最新编译为 <a href="https://github.com/williambj1/OpenCore-Factory/releases" target="_blank" rel="noopener"><img src="https://img.shields.io/github/v/release/williambj1/OpenCore-Factory?color=orange&amp;include_prereleases&amp;label=Release" alt="Release"></a></p></blockquote></li><li><p><a href="https://github.com/acidanthera/MacInfoPkg/releases" target="_blank" rel="noopener">MacInfoPkg</a></p></li><li><p><a href="https://github.com/acidanthera/AppleSupportPkg/releases" target="_blank" rel="noopener">AppleSupportPkg</a></p></li><li><p><strong>Plist 编辑器:</strong></p><ul><li><a href="https://github.com/corpnewt/ProperTree" target="_blank" rel="noopener">ProperTree</a> (基于 Python 的轻量级跨平台 Plist 编辑器, 针对 OpenCore 有优化, Acidanthera 官方推荐)</li><li><s><a href="https://itunes.apple.com/cn/app/xcode/id497799835?mt=12" target="_blank" rel="noopener">Xcode</a></s> (Acidanthera 官方推荐, 但是 Xcode 11 处理 <code>&lt;data&gt;</code> 存在严重问题)</li><li><s>Plist Editor Pro</s> (使用远古 Plist 标准, 会破坏 XML 换行而且不会自动转换 Base64, 可用但是不推荐)</li></ul><div class="note success"><p><a href="https://mackie100projects.altervista.org/opencore-configurator/" target="_blank" rel="noopener">OpenCore Configurator</a> <code>(简称 OCC)</code> 是一个第三方图形化 OpenCore 编辑器, 经过半年依赖的发展, 如今已经趋近成熟</p><p><strong>经测试, 软件已经可以正常使用, 但是由于 OpenCore 的配置文件更新频繁, 所以软件不一定永远兼容最新版本, 同时最新的版本为了同步开发中的自编译版本可能也存在不支持当前最新官方 Release 的情况。</strong></p><p><strong>使用之前需要了解清楚工具的当前支持到的最高版本, 跨版本编辑会造成 config 损坏, 设置项无法对应等棘手情况。</strong></p><p>感谢 <a href="https://github.com/mackie100" target="_blank" rel="noopener"><code>mackie100</code></a> 和 <a href="https://github.com/btwise" target="_blank" rel="noopener"><code>草原企鹅</code></a> 的付出</p></div></li></ul><hr><h4 id="需要具备的条件"><a class="markdownIt-Anchor" href="#需要具备的条件"></a> 需要具备的条件</h4><ul><li>一个 U 盘</li><li><strong>对黑苹果有一定的知识基础, 至少会自己配置 Clover, 清楚各个 内核驱动 <code>.kext</code> 和 UEFI <code>.efi</code> 驱动的用途, 不清楚可以查看<a href="#%E9%99%84%E5%BD%951-opencore-%E6%94%AF%E6%8C%81%E7%9A%84%E5%86%85%E6%A0%B8%E9%A9%B1%E5%8A%A8-kext-%E5%8F%8A%E5%85%B6%E7%94%A8%E9%80%94">附录[1]</a> 和 <a href="#%E9%99%84%E5%BD%952-uefi-%E9%A9%B1%E5%8A%A8-efi-%E5%8F%8A%E5%85%B6%E7%94%A8%E9%80%94">附录[2]</a></strong></li><li>一个完全精简过的 Clover EFI</li><li>一个正常稳定工作的黑苹果测试平台</li><li>EFI 挂载工具</li></ul><h3 id="创建-usb-启动盘"><a class="markdownIt-Anchor" href="#创建-usb-启动盘"></a> 创建 USB 启动盘</h3><blockquote><p>给自己留一个后手, 先用 USB 尝试和排错, 稳定了再迁移到硬盘里</p></blockquote><ol><li><p>创建一个 USB 启动盘, 格式化为 GUID 分区图, 分区类型为 macOS 日志式。</p><p><img src="https://pan.daliansky.net/d/blog/OpenCore/FormatUSB.png" alt="FormatUSB"></p></li><li><p>挂载完 EFI 分区真有意思的部分就「开始了」</p><p><img src="https://pan.daliansky.net/d/blog/OpenCore/EmptyEFI.png" alt="EmptyEFI"></p></li></ol><h3 id="基础文件夹结构"><a class="markdownIt-Anchor" href="#基础文件夹结构"></a> 基础文件夹结构</h3><ol><li><p>解压下载下来的 OpenCore 引导文件, 把 EFI 文件夹里面的 <code>OC 文件夹</code> 和 <code>BOOT/BOOTx64.efi</code> 对号入座放入 ESP 分区中</p><div class="note warning"><p>注意⚠️: 与 Clover 不同, OpenCore 的 BOOTx64.efi 和 OpenCore.efi 是两个不同的文件</p><p>添加 UEFI 引导项的时候应当添加 <code>BOOTx64.efi</code> 而不是 <code>OpenCore.efi</code>!</p></div></li><li><p>我们先 <strong>「删除」</strong> 一些不需要的文件</p><ul><li><strong>drivers 文件夹下</strong><ul><li><p>AppleUsbKbDxe.efi</p><blockquote><p>这个驱动是给使用模拟 UEFI 的老主板在 OpenCore 界面正常输入用的, 请勿在 Ivy Bridge (3 代酷睿)及以上的主板上使用 (<a href="https://applelife.ru/threads/opencore-obsuzhdenie-i-ustanovka.2944066/page-176#post-856653" target="_blank" rel="noopener">详见 vit9696 的解释</a>)</p></blockquote></li><li><p>NvmExpressDxe.efi</p><blockquote><p>用于在 Haswell (4 代酷睿) 或更老的主板上支持 NVMe 硬盘, 新主板不需要</p></blockquote></li><li><p>XhciDxe.efi</p><blockquote><p>用于给 Sandy Bridge (2 代酷睿) 或更老的主板上支持 XHCI, 新主板不需要</p></blockquote></li><li><p>HiiDatabase.efi</p><blockquote><p>用于给 Ivy Bridge (3 代酷睿) 或更老代主板上支持 UEFI 字体渲染, UEFI Shell 中文字渲染异常时使用, 新主板不需要</p></blockquote></li></ul></li><li><strong>tools 文件夹下</strong><ul><li><p>BootKicker.efi</p><blockquote><p>调用苹果原生的引导切换 GUI, 黑苹果不支持</p></blockquote></li><li><p>CleanNvram.efi</p><blockquote><p>OpenCore 自带的 NVRAM 清理功能已经足够我们使用</p></blockquote></li><li><p>GopStop.efi</p><blockquote><p>停止显卡 GOP, 排错时使用</p></blockquote></li><li><p>HdaCodecDump.efi</p><blockquote><p>导出声卡 Codec, 可用于定制声卡, 需要时可以临时加回来</p></blockquote></li><li><p>VerifyMsrE2.efi</p><blockquote><p>用于检查主板上 CFG 锁的状态</p></blockquote></li></ul></li></ul></li><li><p>OpenCore 的正确文件结构如下所示</p><p><img src="https://pan.daliansky.net/d/blog/OpenCore/Structure.png" alt="Structure"></p></li><li><p>现在, 我们可以把 <strong>AppleSupportPkg</strong> 中必需的 <code>.efi</code> 驱动程序放入 <code>Drivers</code> 文件夹, 将 你的 <code>kext</code> 和 <code>DSDT/SSDT</code> 放入各自的文件夹中。<strong>请注意, OpenCore 不支持支持列表以外的 UEFI 驱动程序!</strong></p></li><li><p>完成后的效果:</p><p><img src="https://pan.daliansky.net/d/blog/OpenCore/StructureFilled.png" alt="StructureFilled"></p></li></ol><h4 id="配置思路"><a class="markdownIt-Anchor" href="#配置思路"></a> 配置思路</h4><p>OpenCore 的配置建议遵循从简原则, 先确保能进系统再来增加其它功能 (不进系统功能都是免谈), 变数越少出错的概率也就越低</p><ul><li>内核驱动只保留 <code>Lilu</code>, <code>WhateverGreen</code>, <code>VirtualSMC</code> 和必须依赖才能开机的驱动 (删除 AppleALC, VoodooI2C 等功能性驱动)</li></ul><h3 id="配置-configplist"><a class="markdownIt-Anchor" href="#配置-configplist"></a> 配置 Config.plist</h3><ul><li>请记住 OpenCore 中的 config.plist, 与 Clover 的 config.plist 尽管名称相同但是内容和结构完全不同。<strong>它们不能混合滥用</strong>。</li><li>如果你不清楚某一个项里应该填什么「数据类型」, 请参考 <a href="https://github.com/acidanthera/OpenCorePkg/tree/master/Docs" target="_blank" rel="noopener">OpenCore 官方文档</a></li><li>下面的 <code>Quirk</code> 给的都是推荐值, 请根据自身情况修改</li></ul><blockquote><p>部分未在文中提及的 Quirk 和 参数保留原样</p></blockquote><ol><li><p>复制 <code>Sample.plist</code>, 将副本重命名为 <code>config.plist</code> 并用上文提到的编辑工具打开</p><div class="note danger"><ul><li><strong>如果你打算使用的 SMBIOS 苹果已经停止支持 或者你是用的是戴尔 OEM 笔记本</strong></li><li><strong>请使用 SampleFull.plist 并「认真」补全所有 SMBIOS 信息</strong></li></ul></div><p><img src="https://pan.daliansky.net/d/blog/OpenCore/ConfigSample.png" alt="ConfigSample"></p></li><li><p>里面<code>躺</code>着所有我们需要配置的子项:</p><ul><li><code>ACPI</code>: 用于加载, 屏蔽和修补 ACPI (DSDT/SSDT) 表</li><li><code>Booter</code>: 用于设置 FwRuntimeServices.efi (Slide 值计算, KASLR)</li><li><code>DeviceProperties</code>: 用于设置 PCI 设备属性, 如英特尔缓冲帧补丁, 声卡 Layout ID</li><li><code>Kernel</code>: 用于说明 OpenCore 的具体加密信息, 配置 Kext 加载顺序以及屏蔽驱动</li><li><code>Misc</code>: OpenCore 的自身设置</li><li><code>NVRAM</code>: 用于注入 NVRAM (如引导标识符和 SIP)</li><li><code>Platforminfo</code>: 用于设置 SMBIOS 机型信息</li><li><code>UEFI</code>: 用于加载 UEFI 驱动以及以何种顺序加载</li></ul><p><strong>#WARNING - 1～5</strong> 是开发者的嘱咐和对 Sample 选择的说明, <em><strong>在删除之前请务必确保你已经阅读并遵守了这些条例</strong></em></p><blockquote><p><strong>Warning - 1:</strong> 这只是一个实例。不要直接拿来开机。</p><p><strong>Warning - 2:</strong> 在用 Config 开机之前, 确保你已经理解 Config 内「每一个项的」的意义</p><p><strong>Warning - 3:</strong> 在大多数情况下, 建议从 Sample.plist 开始配置</p><p><strong>Warning - 4:</strong> SampleFull.plist 用于苹果不再支持的机型 (2011 年或更早)</p></blockquote></li></ol><h3 id="acpi"><a class="markdownIt-Anchor" href="#acpi"></a> ACPI</h3><p><strong>Add:</strong></p><ul><li>你需要把这些而例子里内容修改/创建为你的 <code>EFI/OC/ACPI/</code> 下的文件</li></ul><hr><p><strong>Block:</strong></p><ul><li>禁用某个 ACPI 表, 常用于禁用 <code>DAMR</code> 来关闭 VT-d</li></ul><hr><p><strong>Patch:</strong></p><ul><li>对 DSDT (SSDT) 的内容进行查找和替换</li></ul><hr><p><strong>Quirks:</strong> ACPI 相关设置</p><ul><li><strong>FadtEnableReset:</strong> <code>NO</code><ul><li>在旧硬件上修复重启和关机, 除非需要, 否则不推荐开启</li></ul></li><li><strong>NormalizeHeaders:</strong> <code>NO</code><ul><li>清除 ACPI 头字段, 只有 macOS 10.13 需要</li></ul></li><li><strong>RebaseRegions:</strong> <code>YES</code><ul><li>尝试试探性地重新定位 ACPI 内存区域, <strong>使用自定义 DSDT 则必须开启</strong></li></ul></li><li><strong>ResetHwSig:</strong> <code>NO</code><ul><li>存在重新启动后因无法维持硬件签名而导致从休眠中唤醒的问题的硬件需要开启</li></ul></li><li><strong>ResetLogoStatus:</strong> <code>NO</code><ul><li>无法在有 <code>BGRT</code> 表的系统上显示 OEM Windows 标志的硬件需要开启</li></ul></li></ul><h3 id="booter-启动器"><a class="markdownIt-Anchor" href="#booter-启动器"></a> Booter 启动器</h3><p><strong>MmioWhitelist:</strong> 如果开机卡在 <code>PCI...</code> 可以尝试开启 Item 1 下的 Patch</p><hr><p><strong>Quirks:</strong></p><ul><li><p><strong>AvoidRuntimeDefrag:</strong> <code>YES</code></p><ul><li>开启后会修复 UEFI 的运行服务, 例如日期, 时间, NVRAM, 电源控制等</li></ul></li><li><p><strong>DevirtualiseMmio:</strong> <code>YES</code></p><ul><li>开启后会减少 Stolen 内存占用空间，扩大 <code>Slide = N</code> 值的范围, 适用于大多数主板</li></ul></li><li><p><strong>DisableSingleUser:</strong> <code>NO</code></p><ul><li>开启后会禁止 <code>Cmd + S</code> 和 <code>-s</code> 的使用，使设备更加接近于 T2 白苹果</li></ul></li><li><p><strong>DisableVariableWrite:</strong> <code>NO</code></p><ul><li>开启后会禁止 NVRAM 写入, 在 Z390/HM370 等没有原生 macOS 支持 NVRAM 的主板上需要开启</li></ul></li><li><p><strong>DiscardHibernateMap:</strong> <code>NO</code></p><ul><li>开启后会重用原始休眠内存映射，仅某些旧硬件需要</li></ul></li><li><p><strong>EnableSafeModeSlide:</strong> <code>YES</code></p><ul><li>开启后会允许在安全模式下使用 Slide 值</li></ul></li><li><p><strong>EnableWriteUnprotector:</strong> <code>YES</code></p><ul><li>开启后会在执行期间删除 CR0 寄存器中的写入保护</li></ul></li><li><p><strong>ForceExitBootServices:</strong> <code>NO</code></p><ul><li>开启后会确保 ExitBootServices 即使在 MemoryMap 发生更改时也能调用成功, 除非有必要, <strong>否则请勿使用</strong></li></ul></li><li><p><strong>ProtectCsmRegion:</strong> <code>NO</code></p><ul><li>开启后会用于修复人为制造和睡眠唤醒的问题, AvoidRuntimeDefrag 已经修复了这个问题所以请尽可能避免使用这个 Quirk</li></ul></li><li><p><strong>ProtectSecureBoot:</strong> <code>NO</code></p><ul><li>避免操作系统对 UEFI 安全启动变量 (<code>db</code>, <code>dbx</code>, <code>PX</code>, <code>KEK</code>) 进行写入, 这个选项主要用于避免 Insyde 主板和 MacPro5,1 的 NVRAM 问题</li></ul></li><li><p><strong>ProvideCustomSlide:</strong> <code>YES</code></p><ul><li><p>如果 Slide 值存在冲突, 此选项将强制 macOS 执行以下操作:</p><blockquote><p>使用一个伪随机值。 只有在遇到 <code>Only N/256 slide values are usable!</code> 时需要</p></blockquote></li></ul></li><li><p><strong>SetupVirtualMap:</strong> <code>YES</code></p><ul><li>开启后会将 SetVirtualAddresses 调用修复为虚拟地址</li></ul></li><li><p><strong>ShrinkMemoryMap:</strong> <code>NO</code></p><ul><li>有巨大且不兼容内存映射的主板需要开启, 非必须不要使用</li></ul></li><li><p><strong>SignalAppleOS:</strong> <code>NO</code></p><ul><li>通过 OS Info 将 macOS 加载的信息报告给其它操作系统, 用于在 Windows 中为 MacBook 启用 iGPU</li></ul></li></ul><h3 id="deviceproperties-设备属性"><a class="markdownIt-Anchor" href="#deviceproperties-设备属性"></a> DeviceProperties 设备属性</h3><p><strong>不同的设备硬件地址不一样! 你需要先通过 Hackintool 或者 Windows 设备管理器 等工具查看 PCI 设备地址!</strong></p><blockquote><p>此处内容可以用 Hackintool 生成然后直接复制过来, 请提前确保内容和结构无误</p></blockquote><hr><p><strong>Add:</strong> 添加 <code>_DSM</code> 设备属性</p><p><code>PciRoot(0x0)/Pci(0x2,0x0)</code></p><ul><li>注入缓冲帧补丁, 查看 <a href="https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.cn.md#%E4%BD%BF%E7%94%A8-weg-%E8%87%AA%E5%AE%9A%E4%B9%89-fb-%E5%92%8C-%E7%AB%AF%E5%8F%A3-%E8%A1%A5%E4%B8%81" target="_blank" rel="noopener">此处</a>来确认你需要的缓冲帧补丁</li></ul><p><code>PciRoot(0x0)/Pci(0x1f, 0x3)</code> → <code>Layout-id</code></p><ul><li>应用 AppleALC 音频 Layout ID 注入</li></ul><hr><p><strong>Block:</strong> 用于删除/屏蔽设备属性 (可以删除此项, 大多数情况都用不到)</p><ul><li>这里的设置等同于 Clover 里的 ACPI 重命名 <strong><code>_DSM</code> → <code>XDSM</code> + <code>TgtBridge</code></strong></li></ul><h3 id="kernel-内核"><a class="markdownIt-Anchor" href="#kernel-内核"></a> Kernel 内核</h3><p>这里是指定要加载哪些 Kext 以及仿冒 CPU ID 的地方, 这里的顺序<strong>非常重要</strong>, 所以请确保 <code>Lilu.Kext</code> 始终在第一位! 其他优先级更高的 Kext 为 Lilu 的插件, 如 VirtualSMC, AppleALC, WhateverGreen 等</p><p><strong>Add:</strong></p><ul><li><p><strong>BundlePath</strong></p><ul><li>这里填入 Kext 的名称</li><li>如: <code>Lilu.kext</code></li></ul></li><li><p><strong>Enabled</strong></p><ul><li>控制 Kext 的启用禁用</li></ul></li><li><p><strong>ExecutablePath</strong></p><ul><li><p>隐藏在 kext 中的实际可执行文件的路径，可以通过右键单击并选择 <code>显示包内容</code> 来查看 Kext 的路径。 通常为 <code>Contents/MacOS/(Kext)</code>，但有的时候 <code>Plugin</code> 文件夹下也会有 Kext。</p></li><li><p>如: <code>Contents/MacOS/Lilu</code></p><blockquote><p>空壳 Kext 没有可执行文件 (e.g. USBPorts.kext), 此项留空即可</p></blockquote></li></ul></li><li><p><strong>PlistPath</strong></p><ul><li>隐藏在 Kext 中的 <code>Info.plist</code> 路径</li><li>如: <code>Contents/Info.plist</code></li></ul></li></ul><blockquote><p>VoodooI2C 注入样板 <a href="https://github.com/daliansky/OC-little/blob/master/22-%E5%B8%B8%E8%A7%81%E9%A9%B1%E5%8A%A8%E5%8A%A0%E8%BD%BD%E9%A1%BA%E5%BA%8F/config-4-I2C%E9%A9%B1%E5%8A%A8%E5%88%97%E8%A1%A8.plist" target="_blank" rel="noopener">🚪</a></p><p>VoodooPS2 注入样板 <a href="https://github.com/daliansky/OC-little/blob/master/22-%E5%B8%B8%E8%A7%81%E9%A9%B1%E5%8A%A8%E5%8A%A0%E8%BD%BD%E9%A1%BA%E5%BA%8F/config-2-PS2%E9%94%AE%E7%9B%98%E9%A9%B1%E5%8A%A8%E5%88%97%E8%A1%A8.plist" target="_blank" rel="noopener">🚪</a></p></blockquote><hr><p><strong>Emulate:</strong> 仿冒不支持的 CPU, 例如奔腾和赛扬, 或者在不支持的 CPU 上启用 XCPM</p><ul><li><strong>CpuidData:</strong> 设置为零时，将使用原始 CPU 位<ul><li><code>&lt;Clover_FCPUID_Extended_to_4_bytes_Swapped_Bytes&gt; | 00 00 00 00 | 00 00 00 00 | 00 00 00 00</code></li><li>例如: CPUID <code>0x0306A9</code> 就是 <code>A9 06 03 00 | 00 00 00 00 | 00 00 00 00 | 00 00 00 00</code></li></ul></li><li><strong>CpuidMask:</strong> CPU 的被仿冒位<ul><li><code>FF FF FF FF | 00 00 00 00 | 00 00 00 00 | 00 00 00 00</code></li><li>如果需要替换更长的位, 将 <code>00</code> 替换为 <code>FF</code></li></ul></li></ul><hr><p><strong>Block:</strong> 屏蔽系统里的 Kext</p><hr><p><strong>Patch:</strong> 这是你要添加系统内核补丁, Kext 补丁, 和 AMD CPU 补丁的地方。(等同于 Clover 的 KextToPatch 和 KernelToPatch)</p><hr><p><strong>Quirks:</strong></p><ul><li><strong>AppleCpuPmCfgLock:</strong> <code>NO</code><ul><li>如果设备的 CFG-Lock 是开启的状态则需要设置为 <code>YES</code> (尽可能用 Grub 关闭 BIOS 的 CFG-Lock 并避免开启这个 Quirk)</li></ul></li><li><strong>AppleXcpmCfgLock:</strong> <code>NO</code><ul><li>同上</li></ul></li><li><strong>AppleXcpmExtraMsrs:</strong> <code>NO</code><ul><li>禁用奔腾和某些至强等不支持 CPU 所需的多个 MSR 访问</li></ul></li><li><strong>AppleXcpmForceBoost:</strong> <code>NO</code><ul><li>强制拉高睿频, 建议在长期高负载的专业设备上使用, 至强系列的处理器开启这个选项会受益</li></ul></li><li><strong>CustomSMBIOSGuid:</strong> <code>NO</code><ul><li>对 UpdateSMBIOSMode 自定义模式执行 GUID 修补, 用于戴尔笔记本电脑 (等同于 Clover 的 <code>DellSMBIOSPatch</code>)</li></ul></li><li><strong>DisbaleIOMapper:</strong> <code>NO</code><ul><li>需要绕过 VT-d 且 BIOS 中禁用时使用</li></ul></li><li><strong>DummyPowerManagement:</strong> <code>NO</code><ul><li>禁用 AppleIntelCpuPowerManagement 原生电源管理, 用于更好的替代 NullCpuPowerManagement.kext</li></ul></li><li><strong>ExternalDiskIcons:</strong> <code>YES</code><ul><li>硬盘图标补丁, macOS 将内部硬盘视为外接硬盘 (黄色) 时使用</li></ul></li><li><strong>IncreasePciBarSize:</strong> <code>NO</code><ul><li>将 IOPCIFamily 中 32 位 PCI Bar 的大小从 1GB 增加到 4GB, 在 BIOS 中启用 Above4GDecoding 是一种更加干净和安全的方法。某些 X99 板可能需要开启, 这些主板通常会在 IOPCIFamily 上遇到内核崩溃</li></ul></li><li><strong>LapicKernelPanic:</strong> <code>NO</code><ul><li>禁用由 AP 核心 lapic 中断造成的内核崩溃, 通常用于「惠普电脑」 (等同于 Clover 的 <code>Kernel LAPIC</code>)</li></ul></li><li><strong>PanicNoKextDump:</strong> <code>YES</code><ul><li>在发生内核崩溃时阻止输出 Kext 列表, 提供可供排错参考的崩溃日志, 排错时请务必开启</li></ul></li><li><strong>PowerTimeoutKernelPanic:</strong> <code>YES</code><ul><li>修复 macOS Catalina 中由于设备电源状态变化超时而导致的内核崩溃</li></ul></li><li><strong>ThirdPartyDrivers:</strong> <code>NO</code><ul><li>为 SSD 启用 TRIM 指令, NVMe SSD 会自动被 macOS 加载因此不需要, SATA SSD 可以在终端执行 <code>sudo trimforce enable</code> 开启</li><li>同时修复 macOS 10.15 下非苹果原厂 SSD 无法使用硬盘休眠 (<code>hibernatemode 25</code>)</li></ul></li><li><strong>XhciPortLimit:</strong> <code>YES</code><ul><li>这实际上是 15 端口限制补丁, 不建议依赖, 因为这不是 USB 的最佳解决方案。有能力的情况下请选择定制 <a href="https://blog.daliansky.net/Intel-FB-Patcher-tutorial-and-insertion-pose.html#%E5%AE%9A%E5%88%B6usb">USB</a>, 这个选项适用于没有定制 USB 的设备</li></ul></li></ul><h3 id="misc-杂项"><a class="markdownIt-Anchor" href="#misc-杂项"></a> Misc 杂项</h3><p><strong>BlessOverride:</strong> 用于覆盖 Windows <code>bootmgfw.efi</code> 的位置以便识别 Windows 引导项, OpenCore 和 Windows 的引导文件在同一硬盘的同一 ESP 分区下使用</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">▼ Misc                  <span class="tag">&lt;<span class="name">Dictionary</span>&gt;</span></span><br><span class="line">|__ ▼ BlessOverride     <span class="tag">&lt;<span class="name">Array</span>&gt;</span></span><br><span class="line">    |__ Item 0          <span class="tag">&lt;<span class="name">String</span>&gt;</span>          \EFI\Microsoft\Boot\bootmgfw.efi</span><br></pre></td></tr></table></figure><p><strong>Boot:</strong> 引导界面的设置</p><ul><li><p><strong>HibernateMode:</strong> <code>None</code></p><blockquote><p>与系统内的休眠模式 (hibernatemode 25) 配合, 引导进系统会还原休眠前的状态, 这个功能会影响 SSD 寿命, 建议关闭</p></blockquote><ul><li><code>None</code>: 关闭休眠支持</li><li><code>Auto</code>: 自动检测 RTC 和 NVRAM 模式</li><li><code>RTC</code>: RTC 模式</li></ul></li><li><p><strong>HideAuxiliary:</strong> <code>YES</code></p><ul><li>默认隐藏以下引导项, 按空格键显示全部<ul><li>macOS 恢复</li><li>在自定义引导项时定义为 <code>Auxiliary</code> 的引导项</li><li>在 <strong>Tools</strong> 中添加的操作系统 (如: <code>Clean NVRAM</code>)</li></ul></li></ul></li><li><p><strong>HideSelf:</strong> <code>NO</code></p><ul><li>在 OpenCore 的启动选择中隐藏自身 EFI 分区内的其它启动项</li></ul></li><li><p><strong>PickerAttributes:</strong> <code>0x00</code></p><blockquote><p>给 OpenCore 自带的引导选择界面<code>添加特效</code>, 食用方法为填入字体颜色和背景颜色的值的 16 进制之和</p></blockquote><ul><li><strong>字体颜色</strong><ul><li><code>0x00</code>: 黑</li><li><code>0x01</code>: 蓝</li><li><code>0x02</code>: 绿</li><li><code>0x03</code>: 青</li><li><code>0x04</code>: 红</li><li><code>0x05</code>: 品红</li><li><code>0x06</code>: 棕</li><li><code>0x07</code>: 浅灰</li><li><code>0x08</code>: 深灰</li><li><code>0x09</code>: 浅蓝</li><li><code>0x0A</code>: 浅绿</li><li><code>0x0B</code>: 浅青</li><li><code>0x0C</code>: 浅红</li><li><code>0x0D</code>: 浅品红</li><li><code>0x0E</code>: 黄</li><li><code>0x0F</code>: 白</li></ul></li><li><strong>背景颜色</strong><ul><li><code>0x00</code>: 黑</li><li><code>0x10</code>: 蓝</li><li><code>0x20</code>: 绿</li><li><code>0x30</code>: 青</li><li><code>0x40</code>: 红</li><li><code>0x50</code>: 品红</li><li><code>0x60</code>: 棕</li><li><code>0x70</code>: 浅灰</li></ul></li></ul></li><li><p><strong>PickerAudioAssist:</strong> <code>NO</code></p></li><li><p>设置为 <code>YES</code> 时会朗读屏幕上选择项的内容, 需要提提前在 EFI 中放入音频文件并正确设置下文的 <strong>Audio</strong> 章节</p></li><li><p><strong>PollAppleHotKeys:</strong> <code>YES</code></p><ul><li>设置为 <code>YES</code> 后允许在引导过程中使用苹果原生快捷键, 需要与 Quirk <code>KeySupport=Yes</code> 结合使用, 具体体验取决于主板固件。快捷键组合:<ul><li><code>Cmd + V</code>: 启用 <code>-v</code> 跑码</li><li><code>Cmd + Opt + P + R</code>: 重置 NVRAM</li><li><code>Cmd + R</code>: 启动恢复分区</li><li><code>Cmd + S</code>: 启动至单用户模式</li><li><code>Option / ALT</code>: 在 <code>ShowPicker</code> 设置成 <code>NO</code> 时显示引导项选择界面, <code>ALT</code> 不可用时可用 <code>ESC</code> 键代替</li><li><code>Cmd + C + 减号</code>: 关闭主板兼容性检查, 等同于添加引导标识符 <code>-no_compat_check</code></li><li><code>Shift</code>: 安全模式</li></ul></li></ul></li><li><p><strong>ShowPicker:</strong> <code>YES</code></p><ul><li>显示 OpenCore 的 UI, 用于查看可用引导项</li><li><strong>设置为 <code>NO</code> 可以跳过倒计时</strong>, 和 <code>PollAppleHotKeys=Yes</code> 配合快捷键可以大幅提升体验</li></ul></li><li><p><strong>TakeoffDelay:</strong> <code>0</code></p><ul><li>在启动前延迟 <code>n</code> 毫秒, 提升键盘快捷键识别的正确率。<code>n</code> 的有效范围为大于 <code>5000 ~ 10000</code>, 32bit 以内的正整数</li></ul></li><li><p><strong>Timeout:</strong> <code>0</code></p><ul><li>设置引导项等待时间, 单位<code>秒</code></li><li><code>0</code> 为关闭倒计时, 相当于 Clover 的 <code>-1</code> (并不是跳过倒计时)</li></ul></li><li><p><strong>PickerMode:</strong> <code>Builtin</code></p><ul><li><p><code>Builtin</code></p><blockquote><p>使用 OpenCore 自带的简单 UI</p></blockquote></li><li><p><code>External</code></p><blockquote><p>使用其它 GUI</p></blockquote></li><li><p><code>Apple</code></p><blockquote><p>使用苹果原生的 GUI, 黑苹果不支持</p></blockquote></li></ul></li></ul><hr><p><strong>Debug:</strong> Debug 有特殊用途, 除非你知道你在做什么, 否则保持原样, 具体参考官方文档</p><ul><li><p><strong>DisableWatchDog:</strong> <code>NO</code></p><ul><li>如果 macOS 在启动时卡在某些地方, 可能需要设置为 <code>YES</code>, 通常用于排除错误干扰</li></ul></li><li><p><strong>DisplayDelay:</strong> <code>0</code></p></li><li><p><strong>DisplayLevel:</strong></p><ul><li><code>2147483714</code>: 在屏幕上显示所有 Debug 信息</li><li><code>0</code>: 隐藏所有 Debug 信息</li></ul></li><li><p><strong>Target:</strong></p><ul><li><code>0</code>: 关闭日志记录</li><li><code>3</code>: 允许屏幕输出日志</li><li><code>19</code>: 允许屏幕输出 UEFI 变量日志</li><li><code>65</code>: 在 ESP 分区根目录生成日志文件 <code>opencore-YYYY-MM-DD-HHMMSS.txt</code>, 但屏幕上不显示日志</li></ul></li></ul><hr><p><strong>Security:</strong> 安全</p><ul><li><p><strong>AllowNvramReset:</strong> <code>YES</code></p><ul><li>允许在引导选择界面和快捷键 <code>Cmd + Opt + P + R</code> 按下时重置 NVRAM</li></ul></li><li><p><strong>AllowSetDefault:</strong> <code>YES</code></p><ul><li>允许使用 <code>CTRL + 回车</code> 和 <code>CTRL + 数字</code> 锁定默认启动项</li></ul></li><li><p><strong>AuthRestart:</strong> <code>NO</code></p><ul><li>允许重启 FileVault2 分区时不用再次输密码, 有安全风险</li></ul></li><li><p><strong>ExposeSensitiveData:</strong></p><ul><li><code>3</code> 将 OpenCore 的启动路径和版本储存进 NVRAM</li><li><code>11</code> 在 <code>3</code> 的基础上添加主板 OEM 信息, <a href="https://github.com/CloverHackyColor/HWMonitorSMC2" target="_blank" rel="noopener">HWMonitorSMC2</a> 和 <a href="https://github.com/acidanthera/NVMeFix" target="_blank" rel="noopener">NVMeFix</a> 需要主板 OEM 信息才能正常工作</li></ul></li><li><p><strong>Vault:</strong> <code>Optional</code></p><blockquote><p>OpenCore 自身的加密和安全保护, 具体参考官方文档</p></blockquote><ul><li><p><code>Optional</code></p><blockquote><p>不强制要求 <code>vault.plist</code> 和 <code>vault.sig</code> 文件存在, 但是会在其中任意文件存在时依旧执行验证, 不安全</p></blockquote></li><li><p><code>Basic</code></p><blockquote><p>强制要求 <code>vault.plist</code> 存在, 开机时会根据里面的内容核对 <code>OC</code> 目录下的文件, 防止在 EFI 文件系统崩溃后依旧启动</p></blockquote></li><li><p><code>Secure</code></p><blockquote><p>强制要求 <code>vault.sig</code> 签名文件 和 <code>vault.plist</code> 存在, 用于和 UEFI 安全启动配合</p></blockquote></li></ul></li><li><p><strong>ScanPolicy:</strong> <code>0</code></p><ul><li><code>0</code>: 允许扫描所有可用的硬盘</li><li>其它值请参考官方文档, 对给出的选项做 16 进制加法运算</li></ul></li></ul><hr><p><strong>Tools</strong> 用于运行 OC 调试工具, 例如验证 CFG 锁 (VerifyMsrE2)</p><ul><li><strong>Arguments</strong><ul><li>传递的参数</li></ul></li><li><strong>Auxiliary:</strong> <code>YES</code><ul><li><code>YES</code> 默认隐藏</li></ul></li><li><strong>Name</strong><ul><li>OpenCore 启动项中显示的名称</li></ul></li><li><strong>Enabled</strong><ul><li>启用或禁用</li></ul></li><li><strong>Path</strong><ul><li><code>Tools</code> 文件夹下的文件名</li><li>如: <a href="https://github.com/acidanthera/AppleSupportPkg/releases" target="_blank" rel="noopener">VerifyMsrE2.efi</a></li></ul></li></ul><hr><p><strong>Entires:</strong> 用于指定 OpenCore 无法自动找到的无规律引导路径</p><ul><li><strong>Arguments</strong><ul><li>传递的参数</li></ul></li><li><strong>Auxiliary:</strong> <code>NO</code><ul><li><code>YES</code> 默认隐藏</li></ul></li><li><strong>Name</strong><ul><li>OpenCore 启动项中显示的名称</li></ul></li><li><strong>Enabled</strong><ul><li>启用或禁用</li></ul></li><li><strong>Path</strong><ul><li>引导磁盘的 PCI 路径，可以通过 <a href="https://github.com/acidanthera/OpenCoreShell" target="_blank" rel="noopener">OpenCoreShell</a> 的 <code>map</code> 命令找到</li><li>如: <code>PciRoot(0x0)/Pci(0x1D,0x4)/Pci(0x0,0x0)/NVMe(0x1,09-63-E3-44-8B-44-1B-00)/HD(1,GPT,11F42760-7AB1-4DB5-924B-D12C52895FA9,0x28,0x64000)/\EFI\Microsoft\Boot\bootmgfw.efi</code></li></ul></li></ul><h3 id="nvram"><a class="markdownIt-Anchor" href="#nvram"></a> NVRAM</h3><p><strong>Add:</strong></p><ul><li><p><strong><a href="https://github.com/erikberglund/AppleNVRAM/blob/master/Apple/4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14.md" target="_blank" rel="noopener"><code>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</code></a></strong></p><ul><li><strong>UIScale:</strong> OpenCore UI 和引导第一阶段缩放<ul><li><code>01:</code> 正常大小</li><li><code>02:</code> HIDPI (使 FileVault 和 苹果标志 在原生 HIDPI 显示器上以正常大小显示)</li></ul></li><li><strong>DefaultBackgroundColor:</strong> 默认背景颜色<ul><li>控制第一阶段苹果标志后面的背景颜色, <code>加特技</code></li><li>格式为 16 进制颜色 RGBA: <code>RR GG BB AA</code>, 可以随意调整</li><li>标准色:<ul><li>黑: <code>00 00 00 00</code></li><li>灰: <code>BF BF BF 00</code></li></ul></li></ul></li></ul></li><li><p><strong><a href="https://github.com/erikberglund/AppleNVRAM/blob/master/Apple/7C436110-AB2A-4BBB-A880-FE41995C9F82.md" target="_blank" rel="noopener"><code>7C436110-AB2A-4BBB-A880-FE41995C9F82</code></a></strong></p><ul><li><strong>boot-args:</strong> <code>-v debug=0x100</code><ul><li>引导标识符, 更多请查看 <a href="#%E9%99%84%E5%BD%953----%E5%B8%B8%E7%94%A8%E5%86%85%E6%A0%B8%E5%BC%95%E5%AF%BC%E6%A0%87%E8%AF%86%E7%AC%A6%E5%90%88%E9%9B%86">附录[3]</a></li></ul></li><li><strong>csr-active-config:</strong> <code>&lt;0x00000000&gt;</code> (SIP 设置)<ul><li><code>0x00000000</code> - SIP 完全开启</li><li><code>0x30000000</code> - 允许未签名的 Kext 加载并允许写入受保护的文件系统路径</li><li><code>0xE7030000</code> - SIP 完全关闭</li><li><s><code>0x67000000</code></s> - 不再推荐使用</li></ul></li><li><strong>nvda_drv:</strong> <code>&lt;&gt;</code><ul><li>设为 <code>31</code> 时启用 NVIDIA WebDrivers</li><li>没有 N 卡可以删除此项</li></ul></li><li><strong>prev-lang:kbd:</strong> <code>&lt;0x7a682d48616e733a323532&gt;</code> (将默认语言设置为简体中文, 留空为英文)</li><li><strong>SystemAudioVolume:</strong> <code>0x46</code><ul><li><code>0x80</code> 为静音</li></ul></li></ul></li></ul><hr><p><strong>Block:</strong> 强制重写 NVRAM 变量, 因为 <code>Add</code> 不会覆盖 NVRAM 中已经存在的值, 所以需要用 Block 删除原来的值 (如: <code>boot-args</code>) 来起到刷新的作用来注入上方的 <code>Add</code></p><blockquote><p>具体工作原理请参考 <a href="https://github.com/acidanthera/bugtracker/issues/575#issuecomment-554522261" target="_blank" rel="noopener">Acidanthera bugtracker #575</a></p></blockquote><hr><p><strong>LegacyEnable:</strong> 允许从 <code>nvram.plist</code> 中读取 NVRAM 变量</p><ul><li>没有原生 NVRAM 的设备设置为 <code>YES</code></li><li>macOS 下硬件 NVRAM 工作「不」正常的设备设置为 <code>YES</code></li><li>macOS 下硬件 NVRAM 工作正常的设备设置为 <code>NO</code></li></ul><hr><p><strong>LegacyOverwrite:</strong> <code>NO</code></p><ul><li>允许 <code>nvram.plist</code> 中的变量覆盖现有 NVRAM 的变量</li><li>模拟 NVRAM 需要开启</li></ul><hr><p><strong>LegacySchema:</strong></p><ul><li>选择注入的 NVRAM 变量, 其它未被包含的变量即使存在于 <code>nvram.plist</code> 也不会被注入, 与 LegacyEnable 配合使用</li></ul><hr><p><strong>WriteFlash:</strong></p><ul><li>在有些有 bug 的 UEFI 固件上, 系统运行时不能将易失性变量转换为非易失性变量, 这个选项提供的是一个解决方案, 并没有增加一个新功能</li></ul><h3 id="platforminfo-机型信息"><a class="markdownIt-Anchor" href="#platforminfo-机型信息"></a> PlatformInfo 机型信息</h3><p><strong>Auto:</strong> <code>YES</code> (基于 Generic 部分生成 PlatformInfo, 而不是 DataHub, NVRAM 和 SMBIOS 部分)</p><blockquote><p>OpenCore 提供了大量方法来注入 PlatformInfo, 这里只介绍最简单的自动注入法</p></blockquote><hr><p><strong>Generic:</strong></p><ul><li><strong>AdviseWindows</strong> <code>YES</code><ul><li>启用来允许重启到一个 ESP 分区不是磁盘中第一个分区的磁盘中的 Windows</li></ul></li><li><strong>SpoofVendor:</strong> <code>YES</code><ul><li>仿冒制造商为 Acidanthera 来避免出现冲突</li></ul></li><li><strong>SystemUUID:</strong><ul><li>填入设备的硬件 UUID 以免造成 Windows 和其它软件的激活问题 (官方不再建议留空)</li></ul></li><li><strong>MLB:</strong><ul><li>用 macserial 读取或生成</li></ul></li><li><strong>ROM:</strong> <code>&lt;0x############&gt;</code><ul><li>可以是任意 6 Byte MAC 地址, 如 <code>0x112233000000</code></li></ul></li><li><strong>SystemProductName:</strong><ul><li>用 macserial 读取或生成</li></ul></li><li><strong>SystemSerialNumber:</strong><ul><li>用 macserial 读取或生成</li></ul></li></ul><hr><p><strong>UpdateDataHub:</strong> <code>YES</code> (更新 DataHub)</p><hr><p><strong>UpdateNVRAM:</strong> <code>YES</code> (更新 NVRAM)</p><hr><p><strong>UpdateSMBIOS:</strong> <code>YES</code> (更新 SMBIOS)</p><hr><p><strong>UpdateSMBIOSMode:</strong> <code>Create</code> (用新分配的 EfiReservedMemoryType 替换原有的表, 戴尔笔记本需要使用 <code>Custom</code> 并开启 <code>CustomSMBIOSGuid</code>)</p><hr><h4 id="macserial"><a class="markdownIt-Anchor" href="#macserial"></a> macserial</h4><p><strong>使用 macserial 查看原有 PlatformInfo:</strong></p><ol><li><p>打开下载好的 MacInfoPkg</p></li><li><p>找到里面的 <code>macserial</code> 并将其复制到桌面</p></li><li><p>终端输入: <strong>(建议复制粘贴)</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ~/Desktop</span><br><span class="line"></span><br><span class="line">./macserial | grep -w <span class="string">'Model:\|Valid:\|Hardware UUID:\|ROM:\|MLB:\|Serial Number:'</span> | sed <span class="string">'/ \- /d'</span> | tr -d <span class="string">' '</span> | sed $<span class="string">'s/Model:/SystemProductName:/g'</span> | sed $<span class="string">'s/HardwareUUID:/SystemUUID:/g'</span> | sed $<span class="string">'s/SerialNumber:/SystemSerialNumber:/g'</span> | sed $<span class="string">'s/\:/\: /g'</span></span><br></pre></td></tr></table></figure></li><li><p>此时你现有的 PlatformInfo 就已经列出来了, 对着 Config 对号入座即可</p></li></ol><blockquote><p>如果输出的 <code>Valid</code> 不是 <code>Possibly</code> 说明这个 PlatformInfo 不符合规范, 很有可能无法激活苹果服务, 建议重新生成</p></blockquote><hr><p><strong>使用 macserial 生成新的 PlatformInfo:</strong></p><ol><li><p>如果要生成新的 PlatformInfo 请输入如下命令来列出所有支持的设备型号:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ~/Desktop</span><br><span class="line"></span><br><span class="line">./macserial -l | grep <span class="string">'Model:'</span> | tr -d <span class="string">' '</span> | sed $<span class="string">'s/Model:/\\- /g'</span></span><br></pre></td></tr></table></figure></li><li><p>然后输入如下命令来生成序列号和 MLB</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./macserial -m &lt;设备型号&gt;</span><br></pre></td></tr></table></figure><blockquote><p>请忽略 <code>&lt;&gt;</code>, 例子: <code>./macserial -m MacBookPro15,3</code></p></blockquote><p>输出的结果中, <strong><code>|</code></strong> 前面的是 <code>序列号 SystemSerialNumber</code>, 后面的是 <code>MLB</code></p></li></ol><h3 id="uefi"><a class="markdownIt-Anchor" href="#uefi"></a> UEFI</h3><p><strong>ConnectDrivers:</strong> <code>YES</code></p><ul><li>强制加载 <code>.efi</code> 驱动程序, 更改为 <code>NO</code> 将自动连接 UEFI 驱动程序, 这样以获得更快的启动速度, 但并非所有驱动程序都可以自行连接, 某些文件系统驱动程序可能无法加载</li></ul><hr><p><strong>Drivers:</strong> 在这里添加你的 <code>.efi</code> 驱动</p><hr><p><strong>Audio:</strong></p><blockquote><p>这里的声卡设置只与 UEFI 环境相关, 不影响系统内音频, 但是需要确保系统内声卡正常工作, 这里填的部分值需要从系统内的 IOReg 提取</p></blockquote><ul><li><strong>AudioSupport:</strong> <code>YES</code><ul><li><code>YES</code> 启用音频支持</li></ul></li><li><strong>AudioDevice:</strong><ul><li>声卡设备的 PCI 地址 <code>PciRoot(0x0)/Pci...</code></li><li>可以在 macOS 下运行 <code>gfxutil -f HDEF</code> 获得</li></ul></li><li><strong>AudioCodec:</strong> <code>0</code><ul><li>声卡的 Codec 地址, 可以在 IORegistryExplorer 的 <code>HDEF</code> → <code>IOHDACodecDevice</code> → <code>IOHDACodecAddress</code> 中获得, 一般是 <code>0x0</code></li><li>直接搜索 <code>IOHDACodecDevice</code> 可以大幅节约时间</li></ul></li><li><strong>AudioOut:</strong><ul><li>指定的输出设备, 最简单的方法就是从 <code>0 到 声卡总输出数</code> 每个都试一遍</li><li><code>声卡的总输出数</code> 可以在 Debug 版本的 OpenCore 日志中获得 <code>(n Outputs)</code></li></ul></li><li><strong>MinimumVolume:</strong><ul><li>输出最小音量, 有效值为 <code>0 ~ 100</code></li><li>如果下方 <code>VolumeAmplifier</code> 公式计算出的最小音量小于这里给出的值 <code>Duang</code> 就不会被播放</li></ul></li><li><strong>PlayChime:</strong> <code>YES</code><ul><li><code>YES</code> 播放 <code>Duang</code></li></ul></li><li><strong>VolumeAmplifier:</strong> <code>1000</code><ul><li><code>音量在原有基础上放的百分比</code></li><li>有效范围 <code>0 ~ 1000</code></li></ul></li></ul><blockquote><p>如果要让 Duang 和 VoiceOver 等其它音频功能工作, 需要额外下载语音资源包并放置于 <code>ESP(分区)/EFI/OC/Resources/Audio</code> 文件夹下, <a href="https://github.com/acidanthera/OcBinaryData/tree/master/Resources/Audio" target="_blank" rel="noopener">下载地址</a> (注: 使用 <code>git clone --depth=1</code> 速度最快)。</p><p>同时 <a href="https://github.com/acidanthera/OpenCorePkg" target="_blank" rel="noopener">AudioDxe</a> 也需要安装在 <code>Drivers</code> 文件夹中并通过 config 注入</p></blockquote><hr><p><strong>Input:</strong></p><ul><li><strong>KeyForgetThreshold:</strong> <code>5</code><ul><li>按住按键后每个键之间的时间间隔 (单位: 毫秒)</li></ul></li><li><strong>KeyMergeTheshold:</strong> <code>2</code><ul><li>按住按键被重置的时间间隔 (单位: 毫秒)</li></ul></li><li><strong>KeySupport:</strong> <code>YES</code><ul><li>开启 OC 的内置键盘支持</li><li>使用 AppleUsbKbDxe.efi 请设置为 <code>NO</code></li></ul></li><li><strong>KeySupportMode:</strong> <code>Auto</code> 键值转换协议模式<ul><li><code>V1</code>: UEFI 旧版输入协议</li><li><code>V2</code>: UEFI 新输入协议</li><li><code>AMI</code>: APTIO 输入协议</li></ul></li><li><strong>KeySwap:</strong> <code>NO</code><ul><li>交换 Command 和 Option 键</li></ul></li><li><strong>PointerSupport:</strong> <code>NO</code><ul><li>修复 UEFI 选择器协议</li></ul></li><li><strong>PointerSupportMode:</strong> <code>留空</code></li><li><strong>TimerResolution:</strong> <code>50000</code><ul><li>固件时钟刷新的频率 (单位: 100纳秒)</li><li>华硕主板为自己的界面使用 <code>60000</code></li><li>苹果使用 <code>100000</code></li></ul></li></ul><hr><p><strong>Output:</strong></p><ul><li><p><strong>TextRenderer:</strong> <code>BuiltinGraphics</code></p><blockquote><p>文字渲染模式</p></blockquote><ul><li><code>BuiltinGraphics</code>: 使用 OpenCore 内置文字渲染的图形模式, 并同时启用 OpenCore 自带的控制台管理, <strong>支持 HIDPI 和全屏范围显示, 通常效果胜于下面的选项</strong></li><li><code>SystemGraphics</code>: 使用主板固件自带文字渲染的<strong>图形</strong>模式, 并同时启用 OpenCore 自带的控制台管理</li><li><code>SystemText</code>: 使用主板固件自带文字渲染的<strong>文字</strong>模式, 并同时启用 OpenCore 自带的控制台管理</li><li><code>SystemGeneric</code>: 使用主板固件自带文字渲染的<strong>文字</strong>模式和自带的控制台管理</li></ul></li><li><p><strong>ConsoleMode:</strong> <code>留空</code></p><blockquote><p>控制台模式</p></blockquote><ul><li>大多数固件上 <code>留空</code> 是最好的选择</li><li><code>Max</code> 会尽可能使用最大的 ConsoleMode</li><li><strong>TextRendere</strong> 使用 <code>Builtin</code> 时此项设置不生效</li></ul></li><li><p><strong>Resolution:</strong> <code>Max</code></p><ul><li><code>宽x高@Bpp</code> (如: <code>3840x2160@32</code>), 注意 <code>Bpp</code> 不是刷新率, 而是显示位深 (bits per pixel), 如果不清楚可以不填</li><li><code>宽x高</code> (如: <code>3840x2160</code>) 也是支持的</li><li><code>留空</code> 将不会改变 UEFI 的默认分辨率</li><li><code>Max</code> 将会尝试开启最大分辨率</li></ul><blockquote><p>这个选项在固件没有 GOP 时会失效</p></blockquote></li><li><p><strong>ClearScreenOnModeSwitch:</strong> <code>NO</code></p></li><li><p>从图形模式切换到文本模式时, 某些固件仅清除屏幕的一部分, 导致屏幕上残留之前绘制的图片。 此选项会在切换到文本模式之前用黑色填充整个屏幕</p></li><li><p><strong>DirectGopRendering:</strong> <code>NO</code></p><ul><li>开启后会直接使用 OpenCore 内置的 GOP 渲染控制台</li><li>这个选项主要用于提升或修复 MacPro5,1 的渲染问题</li><li>除非开启后能明显感觉到有改进否则不要开启</li></ul></li><li><p><strong>IgnoreTextInGraphics:</strong> <code>NO</code></p></li><li><p>修复不用 <code>-v</code> 开机时日志覆盖苹果标志输出的问题</p></li><li><p><strong>ReplaceTabWithSpace:</strong> <code>NO</code></p></li><li><p>取决于固件, 某些设备在 UEFI Shell 中编辑文件使用 <code>Tab键</code> 出问题时启用。注意, 此选项只作用于 <strong>TextRenderer:</strong> <code>System...</code> (主板固件自带) 的文字渲染</p></li><li><p><strong>ProvideConsoleGop:</strong> <code>YES</code></p><ul><li>macOS 引导加载程序要求 GOP (图形输出协议) 存在于控制台句柄上</li><li>大部分的笔记本都不提供 GOP, 台式机的独立显卡可以单独刷入 GOP</li><li>如果选择启动项之后不出现 macOS 启动 Verbose 请启用</li><li>开启此选项能最大可能保证 OpenCore UI 和 苹果标志 以正确分辨率显示</li></ul></li><li><p><strong>ReconnectOnResChange:</strong> <code>NO</code></p></li><li><p>有些固件在 GOP 分辨率改变后要求重新连接控制器才能输出文本, 开启这个选项会导致从 UEFI Shell 中启动 OpenCore 时直接黑屏, 尽量避免开启</p></li><li><p><strong>SanitiseClearScreen:</strong> <code>YES</code></p><ul><li>修复 OpenCore 在高分屏中以 1024x768 显示的问题, 注意要同时开启带有 OpenCore 自带的控制台管理 (<code>ConsoleControl</code>) 的 <strong>TextRenderer</strong> (前三种) 并将 <code>ConsoleMode</code> 的内容 <strong>「留空」</strong></li></ul></li></ul><hr><p><strong>Protocols:</strong> (协议)</p><ul><li><strong>AppleAudio:</strong> <code>YES</code><ul><li>安装 Apple Audio 协议以在 OpenCore 中使用 VoiceOver, 目前该协议支持在 macOS 10.13 及以上播放音频, 老系统使用的 AppleHDA 协议暂未支持</li></ul></li><li><strong>AppleBootPolicy:</strong> <code>NO</code><ul><li>用于确保虚拟机或旧白苹果上兼容 APFS</li></ul></li><li><strong>AppleEvent:</strong> <code>NO</code><ul><li>用于在虚拟机或旧白苹果上兼容文件保险箱</li></ul></li><li><strong>AppleImageConversation:</strong> <code>NO</code><ul><li>重新安装 Apple Image Conservation 协议</li></ul></li><li><strong>AppleKeyMap:</strong> <code>NO</code><ul><li>重新安装 Apple Key Map 协议</li></ul></li><li><strong>AppleSmcIO:</strong> <code>YES</code><ul><li>重新安装 Apple SMC I/O 协议</li><li><strong>VirtualSmc.efi 已经被替代为此选项</strong></li></ul></li><li><strong>AppleUserInterfaceTheme:</strong> <code>NO</code><ul><li>重新安装 Apple User Interface Theme 协议</li></ul></li><li><strong>DataHub:</strong> <code>NO</code><ul><li>重新安装 Data Hub 协议</li></ul></li><li><strong>DeviceProperties:</strong> <code>NO</code><ul><li>确保在 VM 或旧白苹果上完全兼容</li></ul></li><li><strong>FirmwareVolume:</strong> <code>NO</code><ul><li>修复 Filevault 的 UI 问题, 设置为 <code>YES</code> 可以获得更好地兼容 FileVault</li></ul></li><li><strong>HashServices:</strong> <code>NO</code><ul><li>修复运行 FileVault 时鼠标光标大小不正确的问题, 设置为 <code>YES</code> 来在 Aptio IV 或更老的主板上兼容 FileVault</li></ul></li><li><strong>OSInfo:</strong> <code>NO</code><ul><li>用于为主板或者其它程序接收来自 macOS 引导工具的消息</li></ul></li><li><strong>UnicodeCollation:</strong> <code>NO</code><ul><li>一些较旧的固件破坏了 Unicode 排序规则, 设置为 <code>YES</code> 可以修复这些系统上 UEFI Shell 的兼容性 (通常为用于 IvyBridge 或更旧的设备)</li></ul></li></ul><hr><p><strong>Quirks:</strong></p><ul><li><p><strong>ExitBootServicesDelay:</strong> <code>0</code></p></li><li><p><strong>IgnoreInvalidFlexRatio:</strong> <code>NO</code></p><ul><li>BIOS 中无法禁用 <code>MSR_FLEX_RATIO(0x194)</code> 时开启</li></ul></li><li><p><strong>ReleaseUsbOwnership:</strong> <code>NO</code></p><ul><li>从固件驱动程序中释放 USB 控制器所属权, 除非您不知道自己在做什么, 否则避免使用。Clover 的等效设置是 <code>FixOwnership</code></li></ul></li><li><p><strong>RequestBootVarFallback:</strong> <code>YES</code></p><ul><li>用于修复启动项顺序</li></ul></li><li><p><strong>RequestBootVarRouting:</strong> <code>YES</code></p><ul><li>从 <code>EFI_GLOBAL_VARIABLE_GUID</code> 中为 <code>OC_VENDOR_VARIABLE_GUID</code> 请求 redirectBoot 前缀变量</li><li>启用此项以便能够在与 macOS 引导项设计上不兼容的固件中可靠地使用 <code>启动磁盘</code> 设置</li></ul></li><li><p><strong>UnblockFsConnect:</strong> <code>NO</code></p><ul><li>惠普笔记本在 OpenCore 引导界面没有引导项时设置为 <code>YES</code></li></ul></li></ul><hr><h3 id="解决-clover-和-opencore-的冲突"><a class="markdownIt-Anchor" href="#解决-clover-和-opencore-的冲突"></a> 解决 Clover 和 OpenCore 的冲突</h3><p><strong>在重启进入 OpenCore 之前, 我们还需要解决一些冲突问题:</strong></p><ul><li><p>删除 Clover 设置面板</p><blockquote><p>Clover 设置面板会和 OpenCore 产生冲突, 需要删除</p></blockquote><ul><li>Clover 设置面板位于 <code>/Library/PreferencePanes/Clover.prefPane</code></li><li>终端输入 <code>sudo rm -rf /Library/PreferencePanes/Clover.prefPane</code> 删除</li></ul></li><li><p>清理 Clover 的模拟 NVRAM RC 脚本 和 守护程序 <code>CloverDaemonNew</code></p><blockquote><p>在终端中输入:</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 删除 ESP 分区下的 nvram.plist</span></span><br><span class="line">rm -rf /Volumes/(你的 ESP 分区)/nvram.plist</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除 RC 脚本</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.clover.lib"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.boot.d/10.save_and_rotate_boot_log.local"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.boot.d/20.mount_ESP.local"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.boot.d/70.disable_sleep_proxy_client.local.disabled"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.boot.d/80.save_nvram_plist.local"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.shutdown.local"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.boot.d"</span></span><br><span class="line">rm -rf <span class="string">"/etc/rc.shutdown.d"</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除 Clover 新开发的 NVRAM 守护程序 `CloverDaemonNew`</span></span><br><span class="line">launchctl unload <span class="string">'/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist'</span></span><br><span class="line">rm -rf <span class="string">'/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist'</span></span><br><span class="line">rm -rf <span class="string">'/Library/Application Support/Clover/CloverDaemonNew'</span></span><br><span class="line">rm -rf <span class="string">'/Library/Application Support/Clover/CloverLogOut'</span></span><br><span class="line">rm -rf <span class="string">'/Library/Application Support/Clover/CloverWrapper.sh'</span></span><br></pre></td></tr></table></figure></li><li><p>重置「硬件」NVRAM</p><blockquote><p>为了尽可能减少问题出现的概率, 建议在 Clover 和 OpenCore 之间切换时重置「硬件」NVRAM</p></blockquote><ul><li>通过 Clover F11 清除<ol><li><p>删除 Clover 内的 <code>EmuVariableUefi.efi</code> (通常位于 <code>Drives/UEFI/</code> 或 <code>drivers64UEFI/</code> 目录下)</p><blockquote><p>如果不删除 <code>EmuVariableUefi.efi</code>, Clover 只会重置模拟出来的原本就是空的 NVRAM</p></blockquote></li><li><p>重启进入 Clover 引导项选择界面然后按下 <code>F11</code> 或 <code>Fn+F11</code> 直到设备自动重启</p></li></ol></li></ul></li></ul><ol><li>开机直接选择 UEFI 引导项进入 OpenCore</li></ol><ul><li><p>通过 OpenCore 重置</p><blockquote><p>参考下文</p></blockquote></li></ul><h3 id="现在是时候开机见分晓了"><a class="markdownIt-Anchor" href="#现在是时候开机见分晓了"></a> 现在是时候开机见分晓了</h3><p><img src="https://pan.daliansky.net/d/blog/OpenCore/Success.png" alt="Success"></p><h2 id="完善与优化"><a class="markdownIt-Anchor" href="#完善与优化"></a> 完善与优化</h2><p>这里只简单写了一些网上暂时还找不到中文解决方案的一些问题, 强烈推荐在看这里的同时参阅 <a href="https://blog.xjn819.com/?p=543" target="_blank" rel="noopener">xjn 大佬的博客</a></p><h3 id="排除常见错误"><a class="markdownIt-Anchor" href="#排除常见错误"></a> 排除常见错误</h3><p><strong>遇到如下问题可以尝试这样设置:</strong></p><ol><li><p>进入 OpenCore 时卡在 <code>no vault provided!</code>:</p><ul><li><strong><code>Misc → Security</code></strong><ul><li><code>Vault</code> = <code>Optional</code></li></ul></li></ul></li><li><p>选完启动项后卡在 <code>EndRandomSeed</code> 或直接卡死</p><ul><li><p>如果等一会能进入系统但是不跑码「或」不显示第一阶段的苹果标志:</p><ul><li><strong><code>UEFI → Quirks</code></strong><ul><li><code>ProvideConsoleGop</code> = <code>YES</code></li></ul></li></ul></li><li><p>如果完全卡死:</p><ul><li>尝试 <code>Misc → Boot</code> 下 <code>PollAppleHotKeys</code> = <code>NO</code>, <code>UEFI → Input</code> 下 <code>KeySupport</code> = <code>NO</code>, 并换用 <code>AppleUsbKbDxe.efi</code></li><li>这个设备的 CFG 很可能有锁, 如下方案 <strong>「二选一」</strong><ol><li><p>解锁 CFG (建议), <a href="https://blog.xjn819.com/?p=317" target="_blank" rel="noopener">参考 xjn 教程中的 <code>解锁BIOS中的CFG功能</code> 小节</a></p></li><li><p><code>Kernel → Quirks</code> 下 <code>AppleCpuPmCfgLock</code> = <code>YES</code>, <code>AppleCpuPmCfgLock</code> = <code>YES</code></p><blockquote><p>这个方法的代价是丧失原生电源管理, 「不」建议长期使用</p></blockquote></li></ol></li></ul></li></ul></li><li><p>卡在 <code>PCI Configuration Begin</code></p><ul><li><p>BIOS 关闭 CSM 并设置操作系统模式为 <strong>Win8.1/10</strong></p></li><li><p>依次尝试如下引导标识符</p><ul><li>npci=0x2000</li><li>npci=0x3000</li></ul></li><li><p>如果依旧不行, 将 <strong><code>Booter → MmioWhitelist → Item 1 (Generic...)</code></strong> 下的 <code>Enabled</code> 改为 <code>True</code></p><blockquote><p>4 代 CPU 主板可以尝试同时开启 <code>Item 0</code> 下的补丁</p></blockquote></li></ul></li><li><p>开机出现 <code>Failed to parse real field of type 1</code></p><blockquote><p>这是因为 OC 本身不支持 <code>real</code> 类型的数据, Xcode 在编辑较长的数字的时候会自动将 <code>Integer</code> 转换为 <code>real</code></p></blockquote><ol><li>用 VS Code 打开 config.plist</li><li>Command + F 查找替换所有 <code>real</code> 为 <code>Integer</code></li></ol></li><li><p>开机卡在 <code>This version of Mac OS X is not supported</code></p><ul><li>检查 Config 内 PlatformInfo 是否填写无误<ul><li><code>Automatic</code> = <code>YES</code></li><li>如果使用的是 SampleFull, 确保所有内容都已完整填写</li></ul></li></ul></li><li><p>300 系主板卡在 <code>apfs_module_start</code></p><ul><li>较新的主板使用了新的时钟 <code>AWAC</code> 来代替 <code>RTC</code>, 这个设备与 macOS 不兼容, 下面的方法 <strong>「二选一」</strong><ul><li>(推荐) 添加 <a href="https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl" target="_blank" rel="noopener">SSDT-AWAC</a> 来屏蔽 <code>AWAC</code> 并启动 <code>RTC</code></li><li>用 <a href="https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl" target="_blank" rel="noopener">SSDT-RTC0</a> 仿冒 RTC</li></ul></li></ul></li><li><p>华硕或惠普关机后 BIOS 重置或被强制进入安全模式</p><ul><li>将 <strong><code>Kernel → Patch → Item 0 (com.apple.driver.AppleRTC)</code></strong> 下的 <code>Enabled</code> 改为 <code>YES</code> 来开启 AppleRTC Patch</li></ul></li><li><p>UEFI 引导项选择完 OpenCore 之后直接跳回选择界面</p><ul><li>参考上文重新核对 ESP 分区中的文件夹结构, 确保 UEFI 启动项添加的是 OpenCore 的 <code>Bootx64.efi</code></li></ul></li></ol><h3 id="模拟-nvram"><a class="markdownIt-Anchor" href="#模拟-nvram"></a> 模拟 NVRAM</h3><h4 id="开始之前先在这里澄清一些被广泛误解的理论并解释一些常见问题"><a class="markdownIt-Anchor" href="#开始之前先在这里澄清一些被广泛误解的理论并解释一些常见问题"></a> 开始之前先在这里澄清一些被广泛误解的理论并解释一些常见问题</h4><ul><li><p><strong>什么是 NVRAM:</strong></p><ul><li>非易失性随机存取存储器 (NVRAM) 是随机存取存储器 (RAM) 的一种; 在依赖主板上 CMOS 电池时, 即使断开电脑电源, 该存储器仍可以保证存储的数据不丢失</li><li>NVRAM 里存有大量敏感参数, 如: UEFI 安全启动的 <code>KEK</code>, <code>PK</code>, <code>DB</code> 和 <code>DBX</code>, 因此 NVRAM 需要是一种提供随机访问功能的非易失性存储器, 且需要通过特定的 <a href="https://github.com/erikberglund/AppleNVRAM" target="_blank" rel="noopener">GUID</a> 读写</li></ul></li><li><p><strong>没有「原生 NVRAM 」的含义:</strong></p><ul><li>所谓 “没有「原生」NVRAM” 实际上指的是 macOS 在 <strong>使用 APTIO 内存修复驱动</strong> 的环境下 NVRAM 的「写入」依旧没有被修复, 导致变量无法存入主板</li><li>现在支持 UEFI 的主板都支持 NVRAM, 而且 NVRAM 在 Windows 或者 Linux 下完全正常工作</li><li>macOS 可以正常读取 NVRAM, 也就是说在 Windows 下给 NVRAM 中的 <a href="https://github.com/erikberglund/AppleNVRAM/blob/master/Apple/7C436110-AB2A-4BBB-A880-FE41995C9F82.md" target="_blank" rel="noopener"><code>7C436110-AB2A-4BBB-A880-FE41995C9F82:bootargs</code></a> 加上 <code>-v</code> 后重启进入 macOS 会直接进入啰嗦模式</li><li>「没有 原生 NVRAM」很容易误解为这个主板如同传统 <code>BIOS + MBR</code> 引导的主板一样完全不支持 NVRAM</li><li><strong>「原生 NVRAM」实际上应该理解为 macOS 可以正常读写「硬件」NVRAM</strong></li></ul></li><li><p><strong>没有原生或模拟 NVRAM 的影响:</strong></p><ul><li>无法使用偏好设置的 <code>启动磁盘</code> 为 OpenCore 指定默认引导项</li><li>FakeSMC 的部分 SMC Key 无法保存</li><li>AsusSMC.kext 会丢失键盘在上次关机时的亮度</li></ul><blockquote><p>没有原生或模拟 NVRAM 完全不影响系统的正常运作, 更不存在不模拟 NVRAM 就没法开机的谬论</p></blockquote></li><li><p><strong>哪些主板的硬件 NVRAM 在 macOS 下不正常工作:</strong></p><ul><li>部分 X99 和 X299 芯片组主板</li><li>之前 300 系的 NVRAM 问题已经通过 SSDT 添加 PMC 设备的方式解决</li></ul></li><li><p><strong>验证你的主板的 NVRAM 在 macOS 下是否正常工作:</strong></p><blockquote><p>有时候只参考并不能得出准确的结论, 实际试验一下更加准确</p></blockquote><ol><li>删除引导工具内的 <code>VariableRuntimeDxe.efi</code>, <code>EmuVariableRuntimeDxe.efi</code>, <code>EmuVariableUefi.efi</code></li><li>删除 NVRAM 导出脚本 <code>LogoutHook</code>(参考下文), <code>RC Script</code>(参考上文)</li><li>删除 EFI 分区根目录下的 <code>nvram.plist</code></li><li>重启</li><li>在终端输入 <code>sudo nvram myvar=test</code></li><li>再次重启</li><li>在终端输入 <code>nvram -p | grep -i myvar</code></li><li>如果终端成功输出了 <code>test</code> 那就说明你的主板在 macOS 下硬件 NVRAM 正常工作, 反之就是「不」正常工作</li></ol></li><li><p><strong>模拟 NVRAM 是什么, LogoutHook 扮演什么角色:</strong></p><ul><li><strong>模拟 NVRAM</strong> 是通过 <code>VariableRuntimeDxe</code>(<code>EmuVariableRuntimeDxe</code>/<code>EmuVariableUefi</code>) 模拟出一个 macOS 可读写的重启「不记忆」NVRAM, 里面的内容与硬件层面的 NVRAM 完全隔离, 引导工具在加载完这个驱动后自身也会进入这个环境中并失去对硬件 NVRAM 的控制</li><li><strong>LogoutHook</strong> 是一个在账户注销前运行的脚本, 运行时会用 <code>nvram -x</code> 命令将 NVRAM 中的信息导出至 EFI 分区根目录的 <code>nvram.plist</code> 中, OpenCore 在下一次开机时会读取 <code>nvram.plist</code> 里面的内容并写进硬件 NVRAM 中</li></ul></li><li><p><strong>可以直接使用别人生成的 <code>nvram.plist</code> 吗</strong></p><ul><li>使用别人的 <code>nvram.plist</code> 时, 只有 <a href="https://github.com/erikberglund/AppleNVRAM/blob/master/Apple/7C436110-AB2A-4BBB-A880-FE41995C9F82.md" target="_blank" rel="noopener"><code>7C436110-AB2A-4BBB-A880-FE41995C9F82</code></a> 下的内容可以正常工作</li><li><a href="https://github.com/erikberglund/AppleNVRAM/blob/master/EFI/8BE4DF61-93CA-11D2-AA0D-00E098032B8C.md" target="_blank" rel="noopener"><code>8BE4DF61-93CA-11D2-AA0D-00E098032B8C</code></a> 下的内容由于 UUID 不同完全无法工作, 完全无法为 OpenCore 指定默认引导项</li><li>即使不模拟 NVRAM, OpenCore 和 FwRuntimeServices 提供的 <a href="https://github.com/erikberglund/AppleNVRAM/blob/master/Apple/7C436110-AB2A-4BBB-A880-FE41995C9F82.md" target="_blank" rel="noopener"><code>7C436110-AB2A-4BBB-A880-FE41995C9F82</code></a> 模拟已经足以在 <code>nvram.plist</code> 中正确生成此项</li><li><strong>所以这么做完全没有意义</strong></li></ul></li></ul><h4 id="用-logouthook-模拟-nvram-并为-opencore-指定默认引导项"><a class="markdownIt-Anchor" href="#用-logouthook-模拟-nvram-并为-opencore-指定默认引导项"></a> 用 LogoutHook 模拟 NVRAM 并为 OpenCore 指定默认引导项</h4><p>确认主板在 macOS 下 NVRAM 不正常工作后我们可以通过安装 OpenCore 提供的 LogoutHook 来模拟 NVRAM</p><blockquote><p>这里强烈建议在开始之前用 OpenCore 重置 NVRAM 并通过 <code>VariableRuntimeDxe.efi</code> 创建一个虚拟的可正常读写的 NVRAM</p><p>如果严格按照这个流程执行且 Config 内 <code>BlessOverride</code> 和启动项的路径均已设置正确, 那么理论上 <code>启动磁盘</code> 为 OpenCore 指定默认引导项的功能已经可以正常工作</p><p>如果 OpenCore 无法正确识别 Windows 建议先修复这个问题再模拟 NVRAM</p></blockquote><ol><li><p>按照上文的方法清理 Clover 的 RC 脚本</p></li><li><p>彻底删除之前安装的 LogoutHook</p><ul><li><p>终端输入: <code>sudo defaults read com.apple.loginwindow LogoutHook</code> 来获取 LogoutHook 的路径</p><blockquote><p>如果终端输出的不是一串路径, 而是</p><p><code>The domain/default pair of (com.apple.loginwindow, LogoutHook) does not exist</code></p><p>说明系统内没有安装 LogoutHook, <strong>跳过下面的命令</strong>直接继续下一步 Config 的设置</p></blockquote></li><li><p>输入如下命令来删除 <code>LogoutHook.command</code> 并清空触发设置 <strong>(请按顺序执行!!!)</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 删除文件 LogoutHook.command</span></span><br><span class="line">sudo rm -rf $(sudo defaults <span class="built_in">read</span> com.apple.loginwindow LogoutHook)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 清空 LogoutHook 的触发设置</span></span><br><span class="line">sudo defaults delete com.apple.loginwindow LogoutHook</span><br></pre></td></tr></table></figure></li></ul></li><li><p>Config 中:</p><ul><li><strong><code>Booter → Quirks → DisableVariableWrite</code></strong> 设置为 <code>YES</code></li><li><strong><code>Misc → Security → AllowNvramReset</code></strong> 设置为 <code>YES</code></li><li><strong><code>Misc → Security → ExposeSensitiveData</code></strong> 设置为 <code>3</code></li><li><strong><code>NVRAM → LegacyEnable</code></strong> 设置为 <code>NO</code></li></ul></li><li><p>删除引导工具内 <strong>config.plist「和」Drivers 目录</strong> 下的 <code>VariableRuntimeDxe.efi</code>, <code>EmuVariableRuntimeDxe.efi</code></p></li><li><p>删除 EFI 分区下的 <code>nvram.plist</code></p></li><li><p>重启</p></li><li><p>进入 OpenCore 然后 选择引导界面的重置 NVRAM 选项「或者」按下快捷键 <code>Command + Option + P + R</code></p></li><li><p>设备自动重启后, 进入 BIOS, Windows 或者 Win PE 重新为 OpenCore 添加引导项</p><blockquote><p>OpenCore 重置 NVRAM 时相比 Clover 会重置更多的变量, 理论上更干净, 但是会导致 UEFI 引导项丢失</p></blockquote></li><li><p>进入 macOS, 在 Config 里将 <strong><code>NVRAM → LegacyEnable</code></strong> 设置为 <code>YES</code>, <strong><code>UEFI → Drivers</code></strong> 下添加 <code>VariableRuntimeDxe.efi</code></p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">▼ UEFI                  <span class="tag">&lt;<span class="name">Dictionary</span>&gt;</span></span><br><span class="line">|__ ▼ Drivers           <span class="tag">&lt;<span class="name">Array</span>&gt;</span></span><br><span class="line">    |__ Item #          <span class="tag">&lt;<span class="name">String</span>&gt;</span>          FwRuntimeServices.efi</span><br><span class="line">    |__ Item #+1        <span class="tag">&lt;<span class="name">String</span>&gt;</span>          VariableRuntimeDxe.efi</span><br></pre></td></tr></table></figure></li><li><p>在 <strong><code>EFI/OC/Drivers</code></strong> 文件夹下放入 <a href="https://github.com/williambj1/OpenCore-Factory/releases/tag/OpenCore-UEFI-Drivers" target="_blank" rel="noopener"><code>VariableRuntimeDxe.efi</code></a></p></li><li><p>再次重启</p></li><li><p>进入 macOS, 打开 <code>偏好设置/启动磁盘</code>, 解锁后选择你的 macOS 分区然后 <strong>「锁上」</strong></p></li><li><p>终端输入命令检查 NVRAM 变量是否成功写入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nvram -x <span class="string">'8BE4DF61-93CA-11D2-AA0D-00E098032B8C:Boot0080'</span> | sed <span class="string">'/\&lt;data\&gt;/,/\&lt;\/data\&gt;/!d;//d'</span> | base64 --decode</span><br></pre></td></tr></table></figure><ul><li>如果输出的「结尾」部分包含 <code>\System\Library\CoreServices\boot.efi</code> 我们可以继续执行下面的步骤</li><li>如果显示 <code>nvram: Error getting variable - '8BE4DF61-93CA-11D2-AA0D-00E098032B8C:Boot0080': (iokit/common) data was not found</code> 说明模拟 NVRAM 没有成功, 请回到第一步重来</li></ul></li><li><p>在终端中输入 <code>sudo</code> + <code>空格</code> 然后将 LogoutHook 拉进终端的「窗口中」, 按下回车, 输入密码, 再次回车 (临时运行 LogoutHook)</p></li><li><p>终端中会出现一排上上步提到的错误, 这是正常的因为我们没有其它的引导项 (<code>Boot0081~3</code>) 和上次引导的记录 (<code>BootCurrent</code>) 等等, 只需要确保 <strong>「没有任何关于」<code>Boot0080</code> 和 <code>BootOrder</code></strong> 的错误出现就可以了 (<code>BootNext</code> 也会报错但是实测没有影响)</p></li><li><p>挂载 EFI 分区并打开根目录下的 <code>nvram.plist</code>, 检查 <strong><code>Boot0080</code> 和 <code>BootOrder</code></strong> 是否存在</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">▼ ROOT                                          <span class="tag">&lt;<span class="name">Dictionary</span>&gt;</span></span><br><span class="line">|__ ▼ Add                                       <span class="tag">&lt;<span class="name">Dictionary</span>&gt;</span></span><br><span class="line">    |__ ▼ 7C436110-AB2A-4BBB-A880-FE41995C9F82  <span class="tag">&lt;<span class="name">Dictionary</span>&gt;</span></span><br><span class="line">    |   |__ ...                                 <span class="tag">&lt;<span class="name">Data</span>&gt;</span>        ...</span><br><span class="line">    |   |__ 用 Hackintool 核对内容是否一致</span><br><span class="line">    |__ ▼ 8BE4DF61-93CA-11D2-AA0D-00E098032B8C  <span class="tag">&lt;<span class="name">Dictionary</span>&gt;</span></span><br><span class="line">        |__ Boot0080                            <span class="tag">&lt;<span class="name">Data</span>&gt;</span>        ...</span><br><span class="line">        |__ BootOrder                           <span class="tag">&lt;<span class="name">Data</span>&gt;</span>        ...</span><br></pre></td></tr></table></figure></li><li><p>如果没有问题, 在终端输入如下命令「安装」LogoutHook:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">mv (空格, 把 LogoutHook 拖窗口, 然后再空格) <span class="variable">$HOME</span>/.LogoutHook.command</span><br><span class="line"></span><br><span class="line">sudo <span class="variable">$HOME</span>/.LogoutHook.command install</span><br></pre></td></tr></table></figure><blockquote><p>如果使用 10.12 或更老的系统则需要将 <code>nvram.mojave</code> 也复制到 <code>$HOME</code> 下</p><p><code>mv (空格, 把 nvram.mojave 拖窗口, 然后再空格) $HOME</code></p></blockquote></li><li><p>再次删除引导工具内 <strong>config.plist「和」Drivers 目录</strong> 下的 <code>VariableRuntimeDxe.efi</code></p></li></ol><blockquote><p>非常重要! 不要漏了而前功尽弃!</p></blockquote><ol><li>大功告成!</li></ol><h3 id="修复-opencore-引导界面的显示问题"><a class="markdownIt-Anchor" href="#修复-opencore-引导界面的显示问题"></a> 修复 OpenCore 引导界面的显示问题</h3><p><strong>在 Config 中:</strong></p><ul><li><strong><code>UEFI → Protocols</code></strong><ul><li><code>ConsoleControl</code> = <code>YES</code></li></ul></li><li><strong><code>UEFI → Quirks</code></strong><ul><li><code>ProvideConsoleGop</code> = <code>YES</code></li><li><code>IgnoreTextInGraphics</code> = <code>YES</code></li><li><code>SanitiseClearScreen</code> = <code>YES</code></li></ul></li><li><strong><code>Misc → Boot</code></strong><ul><li><code>ConsoleMode</code> = <code>留空</code></li><li><code>Resolution</code> 设置为显示器的正常分辨率, 如 4k: <code>3840x2160</code></li></ul></li><li><strong><code>UEFI → Output</code></strong><ul><li><code>TextRenderer</code> = <code>BuiltinGraphics</code></li></ul></li></ul><blockquote><p>如果 OC 界面出现在显示屏中央, 即使画面没有扭曲也说明分辨率不正常</p><p>将 <code>ConsoleMode</code> 设置为 <code>Max</code> 并关闭 <code>SanitiseClearScreen</code> 在某些固件上也可以做到分辨率正确, 但是这个方法官方 <strong>「不」推荐使用</strong></p></blockquote><h3 id="在-opencore-中启用-filevault-文件保险箱"><a class="markdownIt-Anchor" href="#在-opencore-中启用-filevault-文件保险箱"></a> 在 OpenCore 中启用 FileVault 文件保险箱</h3><p><strong>在 Config 中:</strong></p><ul><li><strong><code>Misc → Security</code></strong><ul><li><code>AuthRestart</code> = <code>YES</code></li></ul></li><li><strong><code>UEFI → Input</code></strong><ul><li><code>KeySupport</code> = <code>YES</code></li></ul></li><li><strong><code>UEFI → Protocals</code></strong><ul><li><code>FirmwareVolume</code> = <code>YES</code></li><li><code>AppleSmcIo</code> = <code>YES</code></li><li><code>ProvideConsoleGOP</code> = <code>YES</code></li><li><code>RequestBootVarRouting</code> = <code>YES</code></li><li>(Haswell 或更老的主板中 (包括 X99)) <code>HashServices</code> = <code>YES</code></li><li>(在 Aptio IV 固件的主板上, 如果遇到了 <code>Still waiting for root device</code>) <code>ExitBootServicesDelay</code> = <code>5</code></li></ul></li></ul><h3 id="修改-opencore-引导界面的启动项名称"><a class="markdownIt-Anchor" href="#修改-opencore-引导界面的启动项名称"></a> 修改 OpenCore 引导界面的启动项名称</h3><p>在与引导项的 <code>.efi</code> 文件的同一目录下添加纯文本文件 <code>.contentDetails</code> 可以修改对应启动项的名称</p><blockquote><p><strong>注意⚠️!!! 启动项名称只能是 ASCII 字符!!!</strong></p><p><strong>下方的命令修改的是当前 macOS 的启动项名称, 修改其它分区的 macOS 前需要先进入其目录, 这里不再赘述</strong></p><p>删掉 <code>.contentDetails</code> 就可以恢复原来的名称</p></blockquote><p><strong>终端输入:</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">sudo -s</span><br><span class="line"></span><br><span class="line"><span class="comment"># 在 macOS 10.15 挂载系统分区为读写</span></span><br><span class="line">mount -uw / &amp;&amp; killall Finder</span><br><span class="line"></span><br><span class="line"><span class="comment"># macOS</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">"启动项名称"</span> &gt;&gt; /System/Library/CoreServices/.contentDetails</span><br><span class="line"></span><br><span class="line"><span class="comment"># Windows 没有使用 BlessOverride</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">"启动项名称"</span> &gt;&gt; /Volumes/(你的 ESP 分区)/EFI/Boot/.contentDetails</span><br><span class="line"></span><br><span class="line"><span class="comment"># Windows 使用了 BlessOverride</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">"启动项名称"</span> &gt;&gt; /Volumes/(你的 ESP 分区)/EFI/Microsoft/Boot/.contentDetails</span><br><span class="line"></span><br><span class="line"><span class="comment"># 退出 sudo -s</span></span><br><span class="line"><span class="built_in">exit</span></span><br></pre></td></tr></table></figure><h2 id="附录1-opencore-支持的内核驱动-kext-及其用途"><a class="markdownIt-Anchor" href="#附录1-opencore-支持的内核驱动-kext-及其用途"></a> 附录[1] – OpenCore 支持的内核驱动 (Kext) 及其用途</h2><blockquote><p>参考 <a href="https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Kexts.md" target="_blank" rel="noopener">https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Kexts.md</a></p><p><strong>GitHub 项目的下载地址位于 Release 下, 驱动具体支持的设备请进入项目地址查看</strong></p></blockquote><h3 id="有线网卡"><a class="markdownIt-Anchor" href="#有线网卡"></a> 有线网卡</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://www.realtek.com/en/directly-download" target="_blank" rel="noopener">AppleRTL8169Ethernet</a></td><td>Realtek RTL8169 官方驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/Mieze/AtherosE2200Ethernet" target="_blank" rel="noopener">AtherosE2200Ethernet.kext</a></td><td>高通 Atheros Killer E2200 系列驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/al3xtjames/AtherosL1cEthernet" target="_blank" rel="noopener">AtherosL1cEthernet.kext</a></td><td>高通 Atheros AR813x/815x 驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/IntelMausi" target="_blank" rel="noopener">IntelMausi.kext</a></td><td>英特尔有线网卡 Acidanthera 分支</td></tr><tr><td style="text-align:center"><a href="https://github.com/Mieze/IntelMausiEthernet" target="_blank" rel="noopener">IntelMausiEthernet.kext</a></td><td>英特尔有线网卡原作者</td></tr><tr><td style="text-align:center"><a href="https://github.com/RehabMan/OS-X-Null-Ethernet" target="_blank" rel="noopener">NullEthernetInjector.kext</a></td><td>仿冒内建网卡 (没有可用的内建网卡时使用)</td></tr><tr><td style="text-align:center"><a href="https://github.com/SergeySlice/RealtekLANv3" target="_blank" rel="noopener">RealtekR1000SL.kext</a></td><td>Realtek 8111B/C/D/E/EP/F/G/GU/8411B 系列驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/Mieze/RealtekRTL8100" target="_blank" rel="noopener">RealtekRTL8100.kext</a></td><td>Realtek RTL810X 系列驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/Mieze/RTL8111_driver_for_OS_X" target="_blank" rel="noopener">RealtekRTL8111.kext</a></td><td>Realtek RTL8111/8168 系列驱动</td></tr></tbody></table><h3 id="wi-fi-和蓝牙"><a class="markdownIt-Anchor" href="#wi-fi-和蓝牙"></a> Wi-Fi 和蓝牙</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://i.applelife.ru/2018/12/442854_AirPortAtheros40.kext.zip" target="_blank" rel="noopener">AirPortAtheros40.kext</a></td><td>高通 Atheros AR92xx/AR93xx 驱动, 仅用于 10.14+</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/AirportBrcmFixup" target="_blank" rel="noopener">AirportBrcmFixup.kext</a></td><td>非苹果官方博通网卡修复</td></tr><tr><td style="text-align:center"><a href="https://github.com/chunnann/ATH9KFixup" target="_blank" rel="noopener">ATH9KFixup.kext</a></td><td>高通 Atheros AR9xxx 无线网卡修复</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/BrcmPatchRAM" target="_blank" rel="noopener">BrcmPatchRAM.kext</a></td><td>博通网卡蓝牙固件上传</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/BT4LEContinuityFixup" target="_blank" rel="noopener">BT4LEContinuityFixup.kext</a></td><td>IOBluetoothFamily 修补</td></tr><tr><td style="text-align:center"><a href="https://d86o2zu8ugzlg.cloudfront.net/mediatek-craft/drivers/MT7612_7610U_D5.0.1.25_SDK1.0.2.18_UI5.0.0.27_20151209.zip" target="_blank" rel="noopener">MT7610</a></td><td>联发科 MT7610</td></tr><tr><td style="text-align:center"><a href="https://d86o2zu8ugzlg.cloudfront.net/mediatek-craft/drivers/RTUSB_D2870-4.2.9.2_UI-4.0.9.6_2013_11_29.zip" target="_blank" rel="noopener">RT5370</a></td><td>联发科 RT5370</td></tr><tr><td style="text-align:center"><a href="https://drive.google.com/file/d/1ZtdMqlvKBbHULJhl1u9omuLOy6j0vx48/view?usp=sharing" target="_blank" rel="noopener">RTL8192CU</a></td><td>Realtek RTL8192CU 驱动 (链接为谷歌云盘)</td></tr></tbody></table><h3 id="键盘-鼠标和触摸设备"><a class="markdownIt-Anchor" href="#键盘-鼠标和触摸设备"></a> 键盘, 鼠标和触摸设备</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://osxlatitude.com/forums/topic/1948-elan-focaltech-and-synaptics-smart-touchpad-driver-mac-os-x/" target="_blank" rel="noopener">ApplePS2SmartTouchPad.kext</a></td><td>触摸板和键盘</td></tr><tr><td style="text-align:center"><a href="https://github.com/hieplpvip/AsusSMC" target="_blank" rel="noopener">AsusSMC.kext</a></td><td>华硕 Fn 键, 键盘背光灯和环境光传感器 驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/al3xtjames/NoTouchID" target="_blank" rel="noopener">NoTouchID.kext</a></td><td>禁用 Touch ID 检测, 修复输密码时卡顿</td></tr><tr><td style="text-align:center"><a href="https://github.com/Goldfish64/SerialMouse" target="_blank" rel="noopener">SerialMouse.kext</a></td><td>使用 Microsoft 串行鼠标协议的串行鼠标驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/alexandred/VoodooI2C" target="_blank" rel="noopener">VoodooI2C.kext</a></td><td>I2C 触摸板/屏 驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/VoodooPS2" target="_blank" rel="noopener">VoodooPS2Controller.kext</a></td><td>PS2 键盘/触摸板 驱动</td></tr></tbody></table><h3 id="显卡和声卡"><a class="markdownIt-Anchor" href="#显卡和声卡"></a> 显卡和声卡</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://github.com/acidanthera/AppleALC" target="_blank" rel="noopener">AppleALC.kext</a></td><td>定制万能声卡驱动</td></tr><tr><td style="text-align:center"><a href="https://www.nvidia.com/object/mac-driver-archive.html" target="_blank" rel="noopener">NVIDIA CUDA drivers</a></td><td>NVIDIA CUDA 驱动</td></tr><tr><td style="text-align:center"><a href="https://gfe.nvidia.com/mac-update" target="_blank" rel="noopener">NVIDIA Web-drivers</a></td><td>NVIDIA 显卡驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/Andrej-Antipov/SNBGraphicsMojaveInstaller" target="_blank" rel="noopener">SNBGraphicsMojaveInstaller</a></td><td>二代酷睿核显驱动, 仅用于 10.14+</td></tr><tr><td style="text-align:center"><a href="https://sourceforge.net/projects/voodoohda/" target="_blank" rel="noopener">VoodooHDA.kext</a></td><td>万能声卡驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/WhateverGreen" target="_blank" rel="noopener">WhateverGreen.kext</a></td><td>显卡补丁驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/osy86/Polaris22Fixup" target="_blank" rel="noopener">Polaris22Fixup.kext</a></td><td>Polaris22/VegaM 显卡修复</td></tr></tbody></table><h3 id="cpu-和-smc"><a class="markdownIt-Anchor" href="#cpu-和-smc"></a> CPU 和 SMC</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://github.com/acidanthera/CPUFriend" target="_blank" rel="noopener">CPUFriend.kext</a></td><td>CPU 变频管理</td></tr><tr><td style="text-align:center"><a href="https://github.com/CloverHackyColor/FakeSMC3_with_plugins" target="_blank" rel="noopener">FakeSMC.kext and sensors</a></td><td>Clover 官方 FakeSMC</td></tr><tr><td style="text-align:center"><a href="https://github.com/headkaze/HWPEnable" target="_blank" rel="noopener">HWPEnabler.kext</a></td><td>启用 HWP</td></tr><tr><td style="text-align:center"><a href="https://github.com/corpnewt/NullCPUPowerManagement" target="_blank" rel="noopener">NullCPUPowerManagement.kext</a></td><td>AMD 和虚拟机专用版本</td></tr><tr><td style="text-align:center"><a href="https://www.insanelymac.com/forum/topic/329704-opcode-emulator-opemu-plug-in-project/" target="_blank" rel="noopener">OpcodeEmulator.kext</a></td><td>Opcode 模拟驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/interferenc/TSCAdjustReset" target="_blank" rel="noopener">TSCAdjustReset.kext</a></td><td>TSC 频率同步驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/VirtualSMC" target="_blank" rel="noopener">VirtualSMC.kext 及传感器</a></td><td>Acidanthera 的 SMC 和传感器驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/RehabMan/VoodooTSCSync" target="_blank" rel="noopener">VoodooTSCSync.kext</a></td><td>TSC 频率同步驱动</td></tr></tbody></table><h3 id="usb-和-其它接口"><a class="markdownIt-Anchor" href="#usb-和-其它接口"></a> USB 和 其它接口</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://github.com/the-darkvoid/macOS-IOElectrify" target="_blank" rel="noopener">IOElectrify.kext</a></td><td>在雷电 3 设备上启用常开电源</td></tr><tr><td style="text-align:center"><a href="https://github.com/osy86/USBWakeFixup" target="_blank" rel="noopener">USBWakeFixup.kext</a></td><td>修复 Skylake 平台 USB 唤醒黑屏</td></tr><tr><td style="text-align:center"><a href="https://github.com/dukzcry/osx-goodies/tree/master/raid" target="_blank" rel="noopener">SASMegaRAID.kext</a></td><td>LSI MegaRAID SAS 系列 RAID 控制器驱动</td></tr><tr><td style="text-align:center"><a href="https://www.insanelymac.com/forum/topic/321080-sineteks-driver-for-realtek-rtsx-sdhc-card-readers/?do=findComment&amp;comment=2376387" target="_blank" rel="noopener">Sinetek-rtsx.kext</a></td><td>Realtek <code>RTSX</code> SDHC 读卡器驱动</td></tr><tr><td style="text-align:center"><a href="https://github.com/lvs1974/VoodooSDHCMod" target="_blank" rel="noopener">VoodooSDHC.kext</a></td><td>SDHC 读卡器驱动</td></tr></tbody></table><h3 id="其它驱动"><a class="markdownIt-Anchor" href="#其它驱动"></a> 其它驱动</h3><table><thead><tr><th style="text-align:center">驱动及项目地址</th><th>备注</th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://github.com/headkaze/AppleIntelInfo" target="_blank" rel="noopener">AppleIntelInfo.kext</a></td><td>CPU / 核显 变频测试</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/HibernationFixup" target="_blank" rel="noopener">HibernationFixup.kext</a></td><td>修复因 RTC 变量和 NVRAM 造成的睡眠问题</td></tr><tr><td style="text-align:center"><a href="https://github.com/acidanthera/Lilu" target="_blank" rel="noopener">Lilu.kext</a></td><td>SDK &amp; Library</td></tr><tr><td style="text-align:center"><a href="https://github.com/PMheart/LiluFriend" target="_blank" rel="noopener">LiluFriend.kext</a></td><td>用于确保 Lilu 在 L/E 下正常加载</td></tr><tr><td style="text-align:center"><a href="https://github.com/lvs1974/RTCMemoryFixup" target="_blank" rel="noopener">RTCMemoryFixup.kext</a></td><td>修复 BIOS CMOS (RTC) 内存和 AppleRTC 之间的冲突问题</td></tr><tr><td style="text-align:center"><a href="https://github.com/0xFireWolf/NightShiftUnlocker" target="_blank" rel="noopener">NightShiftUnlocker.kext</a></td><td>解锁 NightShift</td></tr><tr><td style="text-align:center"><a href="https://www.applelife.ru/threads/asus-x550vc-i-asus-x550cc.41752/page-130#post-593586" target="_blank" rel="noopener">WebCamera.kext</a></td><td>某些旧设备的摄像头驱动</td></tr></tbody></table><h2 id="附录2-uefi-驱动-efi-及其用途"><a class="markdownIt-Anchor" href="#附录2-uefi-驱动-efi-及其用途"></a> 附录[2] – UEFI 驱动 (.efi) 及其用途</h2><h3 id="opencore-支持的-uefi-驱动"><a class="markdownIt-Anchor" href="#opencore-支持的-uefi-驱动"></a> OpenCore 支持的 UEFI 驱动</h3><ul><li><a href="https://github.com/acidanthera/AppleSupportPkg" target="_blank" rel="noopener">ApfsDriverLoader</a><ul><li>APFS 文件系统引导驱动</li></ul></li><li><a href="https://github.com/acidanthera/OpenCorePkg" target="_blank" rel="noopener">AudioDxe</a><ul><li>OpenCore 用于在 UEFI 环境播放音频的驱动</li></ul></li><li><a href="https://github.com/LongSoft/CrScreenshotDxe" target="_blank" rel="noopener">CrScreenshotDxe</a><ul><li>增加 OpenCore UI 内截屏功能, 快捷键为 <code>LCtrl + LAlt + F12</code> ( 左Ctrl + 左Alt + F12)</li></ul></li><li><a href="https://github.com/acidanthera/AppleSupportPkg" target="_blank" rel="noopener">FwRuntimeServices</a><ul><li>通过支持只读和只写 NVRAM 变量来提高 OpenCore 和 Lilu 的安全性。有些设置项, 例如 <code>RequestBootVarRouting</code>, 需要此驱动程序才能正常运行</li></ul></li><li><a href="https://github.com/acidanthera/OcBinaryData/blob/master/Drivers/HfsPlus.efi" target="_blank" rel="noopener">HFSPlus</a><ul><li>苹果自带的闭源 HFS 驱动, 不具有 <code>Bless</code> 和其它功能, 但是启动速度比它的等效驱动 <code>VBoxHfs</code> 快 3 倍</li></ul></li><li><a href="https://github.com/acidanthera/OpenCorePkg" target="_blank" rel="noopener">HiiDatabase.efi</a><ul><li>用于给 Ivy Bridge (3 代酷睿) 或更老代主板上支持 UEFI 字体渲染, UEFI Shell 中文字渲染异常时使用, 新主板不需要</li></ul></li><li><a href="https://github.com/acidanthera/audk" target="_blank" rel="noopener">NvmExpressDxe</a><ul><li>从 Broadwell 开始的大多数固件中都包含此驱动程序。对于 Haswell 及更早的固件, 如果安装了 NVMe SSD 就需要使用</li></ul></li><li><a href="https://github.com/williambj1/OpenCore-Factory/releases/tag/OpenCore-UEFI-Drivers" target="_blank" rel="noopener">MemoryAllocation.efi</a><ul><li>为 Z390/X99 等主板预留第一组 512MB 内存, 帮助引导工具注入内核以及内核缓存至第一组 512MB 内存, 需要配合 FwRuntimeServices 和引导标识符 <code>slide=1</code></li></ul></li><li><a href="https://github.com/acidanthera/AppleSupportPkg" target="_blank" rel="noopener">AppleUsbKbDxe</a><ul><li>添加了对 <code>AppleKeyMapAggregator</code> 协议支持的 USB 键盘驱动, 这是 <code>AppleGenericInput</code> 的等效驱动, 根据固件的不同, 实际效果会更好或更坏</li></ul></li><li><a href="https://github.com/williambj1/OpenCore-Factory/releases/tag/OpenCore-UEFI-Drivers" target="_blank" rel="noopener">VariableRuntimeDxe</a><ul><li>EDK II 的 NVRAM 驱动, OpenCore 中用于模拟 NVRAM, 需要配合 <code>FwRuntimeServices</code>(.efi) 和 <code>DisableVariableWrite</code>(Quirk)</li></ul></li><li><a href="https://github.com/acidanthera/audk" target="_blank" rel="noopener">VBoxHfs</a><ul><li>具有 <code>bless</code> 支持的 HFS 文件系统驱动程序。该驱动程序可以等效替代 Apple 固件中常见的闭源 HFSPlus 驱动。<strong>此驱动虽然功能更加完善, 但启动速度相比大约慢 3 倍，并且尚未经过安全审核</strong></li></ul></li><li><a href="https://github.com/acidanthera/audk" target="_blank" rel="noopener">XhciDxe</a><ul><li>来自 MdeModulePkg 的 XHCI USB 控制器支持驱动程序。从 Sandy Bridge 开始的大多数固件中都包含此驱动程序。在较旧的固件上可以用于支持 USB 3.0 PCI 卡</li></ul></li></ul><blockquote><p><strong>部分网上无法找到的 UEFI 驱动可以在这里下载</strong></p><p><a href="https://github.com/williambj1/OpenCore-Factory/releases/tag/OpenCore-UEFI-Drivers" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/OpenCore%20UEFI%20Drivers-%E7%82%B9%E5%87%BB%E4%B8%8B%E8%BD%BD-blue" alt="Download"></a></p></blockquote><h3 id="opencore-不兼容的-uefi-驱动"><a class="markdownIt-Anchor" href="#opencore-不兼容的-uefi-驱动"></a> OpenCore 不兼容的 UEFI 驱动</h3><ul><li><a href="https://github.com/acidanthera/AppleSupportPkg" target="_blank" rel="noopener">AppleGenericInput</a><ul><li>添加了对 <code>AppleKeyMapAggregator</code> 协议支持的用户输入驱动。此外, 还解决了某些固件上的鼠标输入问题, 这是 AppleUsbKbDxe 的等效驱动, 根据固件的不同, 实际效果会更好或更坏</li><li><strong>已合并入 OpenCore</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">AppleImageCodec</a><ul><li>为 Clover 启动 FileVault 2 解码 PNG 和 BMP, <strong>OpenCore 已集成</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">AppleKeyAggregator</a><ul><li>为 Clover 支持 FileVault 2 启动 UI 的驱动, <strong>OpenCore 已集成</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">AppleKeyFeeder</a><ul><li>为 Clover 支持 FileVault 2 内 PS/2 键盘输入的驱动, <strong>OpenCore 已集成</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">AppleUITheme</a><ul><li>为 Clover 支持 FileVault 2 启动 UI 主题的驱动, <strong>OpenCore 已集成</strong></li></ul></li><li><a href="https://github.com/acidanthera/AptioFixPkg" target="_blank" rel="noopener">AptioInputFix</a> &amp; <a href="https://github.com/acidanthera/AppleSupportPkg/tree/3036f16a6e51fa1f7c5981df8d8a4305ac38b272/Platform/AppleGenericInput" target="_blank" rel="noopener">AppleGenericInput</a><ul><li>用于解决 UEFI 固件输入问题的驱动, <strong>已与 OpenCore 合并</strong></li></ul></li><li><a href="https://github.com/acidanthera/AptioFixPkg" target="_blank" rel="noopener">AptioMemoryFix</a><ul><li>NVRAM 和内存驱动, 用于修复 UEFI 固件上的内存问题, <strong>已与 OpenCore 合并为 <code>FwRuntimeServices</code></strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">CsmVideoDxe</a><ul><li>用于 Clover GUI 的显卡驱动, 允许使用更多分辨率, 基于 UEFI BIOS 中的 CSM 兼容模块, 并将启用所需的 CSM, <strong>OpenCore 不兼容</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">DataHubDxe</a><ul><li>macOS 必需的 DataHub 协议, <strong>OpenCore 自带且提供了这个 Quirk</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">EmuVariableUefi</a><ul><li>Clover 的模拟 NVRAM 驱动, <strong>OpenCore 不兼容, 替代品为 <code>VariableRuntimeDxe</code></strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">EnglishDxe</a><ul><li>在 UEFI Shell 中支持 UnicodeCollation 协议, <strong>OpenCore 自带且提供了这个 Quirk</strong></li></ul></li><li><a href="https://github.com/acidanthera/audk" target="_blank" rel="noopener">EnhancedFatDxe</a><ul><li>这个驱动已存在于所有 UEFI 固件中, <strong>无法从 OpenCore 直接使用</strong>。由于很多固件的 FAT 支持都有问题, 导致在尝试写入时会损坏文件系统。如果在引导过程中写入 EFI 分区出现问题, 则需要将此驱动用 <a href="https://github.com/LongSoft/UEFITool" target="_blank" rel="noopener">UEFITool</a> 刷入固件中</li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">FirmwareVolume</a><ul><li>为 Clover 启动 FileVault 2 创建 FirmwareVolume 光标的驱动, <strong>OpenCore 已集成</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">FSInject</a><ul><li>Clover 用于注入内核驱动 (Kext) 的驱动, <strong>OpenCore 自带且使用更先进的方法</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">HashServiceFix</a><ul><li>修复 UEFI BIOS 中的哈希支持, <strong>OpenCore 自带且提供了这个 Quirk</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">OsxAptioFixDrv</a><ul><li>旧的 Clover NVRAM 和内存驱动, 用于修复 UEFI 固件上的内存问题, <strong>与 FwRuntimeServices 和 OpenCore 不兼容</strong></li></ul></li><li><a href="https://www.reddit.com/r/hackintosh/comments/cfjyla/i_unleashed_a_plague_upon_you_guys_and_i_am_sorry/" target="_blank" rel="noopener">OSXAptioFix2Drv-Free2000.efi</a><ul><li>Clover 的内存驱动, 用于修复 UEFI 固件上的内存问题, <a href="(https://www.reddit.com/r/hackintosh/comments/cfjyla/i_unleashed_a_plague_upon_you_guys_and_i_am_sorry/)">作者已经声明会损坏硬件</a></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">OsxAptioFix3Drv</a><ul><li>Clover NVRAM 和内存驱动, 用于修复 UEFI 固件上的内存问题, <strong>与 FwRuntimeServices 和 OpenCore 不兼容</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">OsxFatBinaryDrv</a><ul><li>Clover 用于支持 OS X 10.9 和更早版本的 FAT Binary 可执行文件的驱动, <strong>与 FwRuntimeServices 和 OpenCore 不兼容</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">OsxLowMemFixDrv</a><ul><li>精简版的 OsxAptioFixDrv, 用于修复 UEFI 固件上的内存问题, <strong>与 FwRuntimeServices 和 OpenCore 不兼容</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">PartitionDxe</a><ul><li>用于支持非常规分区图的驱动, 如: 混合 GPT/MBR 或 Apple 分区图, <strong>OpenCore 兼容性未知</strong></li></ul></li><li><a href="https://sourceforge.net/projects/cloverefiboot/" target="_blank" rel="noopener">Ps2MouseDxe</a><ul><li>PS/2 鼠标驱动, <strong>这个驱动已存在于所有 UEFI 固件中</strong></li></ul></li><li><a href="https://github.com/CloverHackyColor/FakeSMC3_with_plugins" target="_blank" rel="noopener">SMCHelper</a><ul><li>UEFI 层面的 SMC 驱动, 用于与 FakeSMC 配合。<strong>与 OpenCore 不兼容</strong></li></ul></li><li><a href="https://github.com/acidanthera/VirtualSMC/tree/master/EfiDriver" target="_blank" rel="noopener">VirtualSmc</a><ul><li>UEFI 层面的 SMC 驱动, <strong>已与 OpenCore 合并</strong></li></ul></li><li><strong>其它未在本文中提到的 UEFI 驱动一律不兼容</strong></li></ul><h2 id="附录3-常用内核引导标识符合集"><a class="markdownIt-Anchor" href="#附录3-常用内核引导标识符合集"></a> 附录[3] – 常用内核引导标识符合集</h2><table><thead><tr><th style="text-align:center">引导标识符</th><th>作用</th></tr></thead><tbody><tr><td style="text-align:center"><code>-amd_no_dgpu_accel</code></td><td>关闭 AMD 显卡硬件加速</td></tr><tr><td style="text-align:center"><code>cpus=#</code></td><td>启用 <code>#</code> 个 CPU 核心</td></tr><tr><td style="text-align:center"><a href="http://www.yekki.me/power-nap-and-darkwake-argument/" target="_blank" rel="noopener"><code>darkwake=0</code></a></td><td>禁用 Power Nap</td></tr><tr><td style="text-align:center"><code>dart=0</code></td><td>禁用 VT-d</td></tr><tr><td style="text-align:center"><code>debug=0x100</code></td><td>发生 KP 时不自动重启</td></tr><tr><td style="text-align:center"><code>keepsyms=1</code></td><td>发生 KP 时保留 Debug Symbols, 用于给开发者反馈问题</td></tr><tr><td style="text-align:center"><code>kext-dev-mode=1</code></td><td>启用 Kext 开发模式, 非开发者请勿使用</td></tr><tr><td style="text-align:center"><code>-no_compat_check</code></td><td>关闭兼容性检查</td></tr><tr><td style="text-align:center"><code>npci=0x2000</code></td><td>在旧设备上禁用 kIOPCIConfiguratorPFM64</td></tr><tr><td style="text-align:center"><code>nvda_drv=1</code></td><td>启用 N 卡驱动的老方法, 在 10.12 及以后失效</td></tr><tr><td style="text-align:center"><code>nv_disable=1</code></td><td>关闭 N 卡硬件加速</td></tr><tr><td style="text-align:center"><code>-s</code></td><td>单用户模式</td></tr><tr><td style="text-align:center"><code>slide=#</code></td><td>手动设置 KASLR slide 值为 <code>#</code></td></tr><tr><td style="text-align:center"><code>-v</code></td><td>verbose 跑码模式</td></tr><tr><td style="text-align:center"><code>-x</code></td><td>安全模式</td></tr></tbody></table><blockquote><p>内核驱动提供的引导标识符请去对应驱动的 Readme 查看</p></blockquote><h2 id="参考及引用"><a class="markdownIt-Anchor" href="#参考及引用"></a> 参考及引用</h2><ul><li><a href="https://www.apple.com" target="_blank" rel="noopener">Apple</a> 的 macOS</li><li><a href="https://github.com/acidanthera" target="_blank" rel="noopener">Acidanthera</a> 的 OpenCore 及其<a href="https://github.com/acidanthera/OpenCorePkg/tree/master/Docs" target="_blank" rel="noopener">官方文档</a></li><li><a href="https://github.com/khronokernel" target="_blank" rel="noopener">khronokernel</a> 的 <a href="https://github.com/khronokernel/Getting-Started-With-OpenCore" target="_blank" rel="noopener">Getting-Started-With-OpenCore</a> 和 <a href="https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide" target="_blank" rel="noopener">Opencore-Vanilla-Desktop-Guide</a></li><li><a href="https://tonymacx86.com/" target="_blank" rel="noopener">Tonymacx86</a> 的 <a href="https://www.tonymacx86.com/resources/clover-emulated-nvram-uninstaller.368/" target="_blank" rel="noopener">Emulated-NVRAM-Uninstaller</a></li><li><a href="https://github.com/xjn819" target="_blank" rel="noopener">xjn</a> 的博客 <a href="https://blog.xjn819.com/?p=543" target="_blank" rel="noopener">使用OpenCore引导黑苹果</a></li></ul><h2 id="鸣谢"><a class="markdownIt-Anchor" href="#鸣谢"></a> 鸣谢</h2><ul><li><a href=".">宪武</a> 提供的 OpenCore SSDT Hotpatch 典范 <a href="https://github.com/daliansky/OC-little" target="_blank" rel="noopener">OC-little</a></li><li><a href="https://github.com/xlivans" target="_blank" rel="noopener">xlivans</a>, <a href="https://github.com/zijun-he" target="_blank" rel="noopener">子俊</a> 对 OpenCore 的大量跟进和研究</li><li>OpenCore 交流群成员进行的大量测试</li><li><a href="https://github.com/williambj1" target="_blank" rel="noopener">Bat.bat</a> 对教程对审核更新完善</li></ul></div><div><div id="wechat_subscriber" style="display:block;padding:10px 0;margin:20px auto;width:100%;text-align:center"><a href="https://hackintosher.taobao.com"><img id="wechat_subscriber_qcode" src="/uploads/WeChatandShop.png" alt="黑果小兵 wechat" style="max-width:90%"></a><div>微信扫一扫，订阅/直达【黑果小兵的部落阁】</div></div></div><div class="updated"><svg xmlns="http://www.w3.org/2000/svg" width="130" height="20"><lineargradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></lineargradient><clippath id="a"><rect width="130" height="20" rx="3" fill="#fff"/></clippath><g clip-path="url(#a)"><path fill="#555" d="M0 0h55v20H0z"/><path fill="#97CA00" d="M55 0h75v20H55z"/><path fill="url(#b)" d="M0 0h130v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="Menlo,monospace" font-size="110"><text x="285" y="150" fill="#010101" fill-opacity=".3" textlength="450" transform="scale(.1)">更新日期</text><text x="285" y="140" textlength="450" transform="scale(.1)">更新日期</text><text x="915" y="150" fill="#010101" fill-opacity=".3" textlength="650" transform="scale(.1)">2023-09-20</text><text x="915" y="140" textlength="650" transform="scale(.1)">2023-09-20</text></g></svg></div><div><div><div style="text-align:center;color:#ccc;font-size:14px">-------------本文结束<i class="fa fa-apple"></i>感谢您的阅读-------------</div></div></div><div><div style="padding:10px 0;margin:20px auto;width:90%;text-align:center"><button id="rewardButton" disable="enable" onclick='var qr=document.getElementById("QR");"none"===qr.style.display?qr.style.display="block":qr.style.display="none"'><span>打赏</span></button><div>如果文章对您有帮助，就请站长喝杯咖啡吧 ´◡`</div><div id="QR" style="display:none"><div id="wechat" style="display:inline-block"><img id="wechat_qr" src="/images/wechatpay.jpg" alt="黑果小兵 微信支付"><p>微信支付</p></div><div id="alipay" style="display:inline-block"><img id="alipay_qr" src="/images/alipay.jpg" alt="黑果小兵 支付宝"><p>支付宝</p></div></div></div></div><div><div><ul class="qq-qun"><div><p></p><h2>QQ群列表：</h2><p></p><p>630724380 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=JyGkfKK7U3Xq3TDtpqKOTq_gW7SBg4Uh&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群7</a> 2000人 新开群<br>713810838 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=e8E-1Ge2lCoBSTlj8Y4zMxX7l7-V63Iv&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群8</a> 2000人 新开群<br>688324116 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=Fp4HZ5e8A61oCu0GMS5YUqP6COc43-AO&jump_from=webapi" target="_blank" rel="noopener">一起黑苹果</a> 2000人<br>331686786 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=No8zvDfvDicT-GfSApw1RMBI-3MQ7zM3&jump_from=webapi" target="_blank" rel="noopener">一起吃苹果</a> 2000人<br>257995340 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=acztqL9efoqAOoptc_3moZ9b3Sgczu9_&jump_from=webapi" target="_blank" rel="noopener">一起啃苹果</a> 2000人群 远景报备群<br>875482673 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=aZNyoRum_er2mruqmnbX_93ncHNgsyak&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群</a> 2000人<br>1058822256 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=1sIT0BDaejgr9t1Hlw16cMnw_Z96zleV&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群2</a> 2000人<br>819662911 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=aJx9xO7vAmyslCuOdK0bRMmDLpvOCeRw&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群3</a> 2000人<br>954098809 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=iu042k0X5snr--dzAxOzcsvD9Zft9yx7&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群4</a> 2000人<br>1161377948 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=kBV9vCnz-NqtXXJiwnUhaLyJN1D7G0n6&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群5</a> 2000人<br>553283949 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=kr_hZc5pKK4TCDRaFPwRlfAiB4528InP&jump_from=webapi" target="_blank" rel="noopener">黑果小兵黑苹果技术群6</a> 2000人<br>701278330 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=x57TlUmxz88oXGDWjMOOsWokYi8klE11&jump_from=webapi" target="_blank" rel="noopener">黑苹果无线网卡交流群</a> 1000人群 DW1820A技术支持群<br>891434070 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=TUAxSUUtw_T1N62V0kF1sWvMcDr_eoxc&jump_from=webapi" target="_blank" rel="noopener">Catalina黑苹果交流群</a> 2000人群 远景报备群<br>939122730 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=g_rpf7m0LJllE6WHY9c0gVvCTBm1MtuN&jump_from=webapi" target="_blank" rel="noopener">Catalina黑苹果交流II群</a> 2000人群<br>891677227 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=xsuIOzF7RXYaRTTbJ5o_UjzohRDUx5UY&jump_from=webapi" target="_blank" rel="noopener">黑果小兵高级群</a> 2000人群<br>943307869 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=aoSvqrbysdjPo0Wa_XvvPuMG9NMEtOie&jump_from=webapi" target="_blank" rel="noopener">黑果小兵高级群II</a> 2000人群<br>419298796 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=4gWtT2-pOWZYIGwIpVaTNft2aOJP-5qs&jump_from=webapi" target="_blank" rel="noopener">零刻黑苹果技术交流群</a> 500人群 非专用机型请勿加入<br>275356796 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=H7hFwiVkZq71L7se6rz3hE9QcacqL-dV&jump_from=webapi" target="_blank" rel="noopener">morefine黑苹果技术交流群</a> 500人群 非专用机型请勿加入<br>869792897 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=MTDHb2QgLH3gkaymtdFCpk77J5ufWJpH&jump_from=webapi" target="_blank" rel="noopener">minisforum U820黑苹果技术群</a> 500人群 非专用机型请勿加入<br>942112153 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=N5cjw5ksrnmk-RMQ4fPCOo5D_Dxiu47B&jump_from=webapi" target="_blank" rel="noopener">天逸510s Mini黑苹果交流群</a> 1000人群 非专用机型请勿加入<br>673294583 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=GgcMJM5-98yB-fc6zyGcTI3OuesrSBRk&jump_from=webapi" target="_blank" rel="noopener">小新Pro黑苹果技术群</a> 2000人群 非专用机型请勿加入<br>946132482 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=r-m99xC-BPIRdVkEjU6duvqXMJ-1FOwA&jump_from=webapi" target="_blank" rel="noopener">小新Pro黑苹果</a> 500人群 非专用机型请勿加入<br>158976808 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=c9DeeyUg9x4dZlOpIVmj4R4g38p-YCZ1&jump_from=webapi" target="_blank" rel="noopener">DELL黑苹果交流群</a> 1000人群 非专用机型请勿加入<br>247451054 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=h7fvRnWmdaMK2D0qVQLzJsjCC9PwB5h3&jump_from=webapi" target="_blank" rel="noopener">小米Pro黑苹果高级群</a> 2000人群 非专用机型请勿加入<br>943181023 <a href="https://qm.qq.com/cgi-bin/qm/qr?k=OGO_GSX9ZhtbQ_HNns57Vdxm5pR1wH6V&jump_from=webapi" target="_blank" rel="noopener">联想小新Air黑苹果交流群</a> 500人群 非专用机型请勿加入<br></p><p></p><h2>Telegram群：</h2><p></p><p>黑果小兵的部落阁 <a href="http://t.me/daliansky" target="_blank">http://t.me/daliansky</a><br>黑果小兵的部落阁 #安装问题讨论 <a href="https://t.me/Hackintosh_Installer" target="_blank">https://t.me/Hackintosh_Installer</a></p><p></p><h2>淘宝店铺：</h2><p></p><p>黑果小兵的部落阁 <a href="https://hackintosher.taobao.com" target="_blank">https://hackintosher.taobao.com</a></p></div></ul></div></div><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者： </strong>黑果小兵</li><li class="post-copyright-link"><strong>本文链接：</strong> <a href="https://blog.daliansky.net/OpenCore-BootLoader.html" title="精解OpenCore">https://blog.daliansky.net/OpenCore-BootLoader.html</a></li><li class="post-copyright-license"><strong>版权声明： </strong>本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fa fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处！</li></ul></div><footer class="post-footer"><div class="post-tags"><a href="/tags/教程/" rel="tag"><i class="fa fa-tag"></i> 教程</a> <a href="/tags/OC-little/" rel="tag"><i class="fa fa-tag"></i> OC-little</a> <a href="/tags/bootloader/" rel="tag"><i class="fa fa-tag"></i> bootloader</a> <a href="/tags/opencore/" rel="tag"><i class="fa fa-tag"></i> opencore</a></div><div class="post-nav"><div class="post-nav-next post-nav-item"><a href="/macOS-Mojave-10.14.5-18F132-official-version-with-Clover-4928-original-image.html" rel="next" title="【黑果小兵】macOS Mojave 10.14.5 18F132 正式版 with Clover 4928原版镜像"><i class="fa fa-chevron-left"></i> 【黑果小兵】macOS Mojave 10.14.5 18F132 正式版 with Clover 4928原版镜像</a></div><span class="post-nav-divider"></span><div class="post-nav-prev post-nav-item"><a href="/macOS-Mojave-10.14.6-18G87-Release-version-with-Clover-5033-original-image.html" rel="prev" title="【黑果小兵】macOS Mojave 10.14.6 18G103 正式版 with Clover 5091原版镜像[双EFI双平台终极版]">【黑果小兵】macOS Mojave 10.14.6 18G103 正式版 with Clover 5091原版镜像[双EFI双平台终极版] <i class="fa fa-chevron-right"></i></a></div></div></footer></div></article></div></div><div id="gitalk-container"></div></div><div class="sidebar-toggle"><div class="sidebar-toggle-line-wrap"><span class="sidebar-toggle-line sidebar-toggle-line-first"></span> <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span> <span class="sidebar-toggle-line sidebar-toggle-line-last"></span></div></div><aside id="sidebar" class="sidebar"><div id="sidebar-dimmer"></div><div class="sidebar-inner"><ul class="sidebar-nav motion-element"><li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">文章目录</li><li class="sidebar-nav-overview" data-target="site-overview-wrap">站点概览</li></ul><div class="site-overview-wrap sidebar-panel"><div class="site-overview"><div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person"><a href="/"><img class="site-author-image" itemprop="image" src="/images/avatar.png" alt="黑果小兵"></a><p class="site-author-name" itemprop="name">黑果小兵</p><p class="site-description motion-element" itemprop="description">黑果小兵</p></div><nav class="site-state motion-element"><div class="site-state-item site-state-posts"><a href="/archives/"><span class="site-state-item-count">127</span> <span class="site-state-item-name">日志</span></a></div><div class="site-state-item site-state-categories"><a href="/categories/index.html"><span class="site-state-item-count">26</span> <span class="site-state-item-name">分类</span></a></div><div class="site-state-item site-state-tags"><a href="/tags/index.html"><span class="site-state-item-count">289</span> <span class="site-state-item-name">标签</span></a></div></nav><div class="feed-link motion-element"><a href="/atom.xml" rel="alternate"><i class="fa fa-rss"></i> RSS</a></div><div class="links-of-author motion-element"><span class="links-of-author-item"><a href="https://github.com/daliansky" title="GitHub &rarr; https://github.com/daliansky" rel="noopener" target="_blank"><i class="fa fa-fw fa-github"></i></a> </span><span class="links-of-author-item"><a href="http://www.jianshu.com/u/df9143008845" title="简书 &rarr; http://www.jianshu.com/u/df9143008845" rel="noopener" target="_blank"><i class="fa fa-fw fa-heartbeat"></i></a> </span><span class="links-of-author-item"><a href="http://shang.qq.com/wpa/qunwpa?idkey=db511a29e856f37cbb871108ffa77a6e79dde47e491b8f2c8d8fe4d3c310de91" title="QQ &rarr; http://shang.qq.com/wpa/qunwpa?idkey=db511a29e856f37cbb871108ffa77a6e79dde47e491b8f2c8d8fe4d3c310de91" rel="noopener" target="_blank"><i class="fa fa-fw fa-qq"></i></a></span></div><div class="links-of-blogroll motion-element links-of-blogroll-block"><div class="links-of-blogroll-title"><i class="fa fa-fw fa-link"></i> Links</div><ul class="links-of-blogroll-list"><li class="links-of-blogroll-item"><a href="https://blog.tlhub.cn" title="https://blog.tlhub.cn" rel="noopener" target="_blank">Athlonreg</a></li><li class="links-of-blogroll-item"><a href="http://www.sqlsec.com" title="http://www.sqlsec.com" rel="noopener" target="_blank">国光</a></li></ul></div></div></div><div class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active"><div class="post-toc"><div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#什么是-opencore"><span class="nav-number">1.</span> <span class="nav-text">什么是 OpenCore</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#为什么选择-opencore"><span class="nav-number">2.</span> <span class="nav-text">为什么选择 OpenCore</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#opencore-常见疑问"><span class="nav-number">2.1.</span> <span class="nav-text">OpenCore 常见疑问</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#配置-opencore"><span class="nav-number">3.</span> <span class="nav-text">配置 OpenCore</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#准备工作"><span class="nav-number">3.1.</span> <span class="nav-text">准备工作</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#推荐-bios-设置"><span class="nav-number">3.1.1.</span> <span class="nav-text">推荐 BIOS 设置</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#下载如下文件"><span class="nav-number">3.1.2.</span> <span class="nav-text">下载如下文件</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#需要具备的条件"><span class="nav-number">3.1.3.</span> <span class="nav-text">需要具备的条件</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#创建-usb-启动盘"><span class="nav-number">3.2.</span> <span class="nav-text">创建 USB 启动盘</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#基础文件夹结构"><span class="nav-number">3.3.</span> <span class="nav-text">基础文件夹结构</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#配置思路"><span class="nav-number">3.3.1.</span> <span class="nav-text">配置思路</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#配置-configplist"><span class="nav-number">3.4.</span> <span class="nav-text">配置 Config.plist</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#acpi"><span class="nav-number">3.5.</span> <span class="nav-text">ACPI</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#booter-启动器"><span class="nav-number">3.6.</span> <span class="nav-text">Booter 启动器</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#deviceproperties-设备属性"><span class="nav-number">3.7.</span> <span class="nav-text">DeviceProperties 设备属性</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#kernel-内核"><span class="nav-number">3.8.</span> <span class="nav-text">Kernel 内核</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#misc-杂项"><span class="nav-number">3.9.</span> <span class="nav-text">Misc 杂项</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#nvram"><span class="nav-number">3.10.</span> <span class="nav-text">NVRAM</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#platforminfo-机型信息"><span class="nav-number">3.11.</span> <span class="nav-text">PlatformInfo 机型信息</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#macserial"><span class="nav-number">3.11.1.</span> <span class="nav-text">macserial</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#uefi"><span class="nav-number">3.12.</span> <span class="nav-text">UEFI</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#解决-clover-和-opencore-的冲突"><span class="nav-number">3.13.</span> <span class="nav-text">解决 Clover 和 OpenCore 的冲突</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#现在是时候开机见分晓了"><span class="nav-number">3.14.</span> <span class="nav-text">现在是时候开机见分晓了</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#完善与优化"><span class="nav-number">4.</span> <span class="nav-text">完善与优化</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#排除常见错误"><span class="nav-number">4.1.</span> <span class="nav-text">排除常见错误</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#模拟-nvram"><span class="nav-number">4.2.</span> <span class="nav-text">模拟 NVRAM</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#开始之前先在这里澄清一些被广泛误解的理论并解释一些常见问题"><span class="nav-number">4.2.1.</span> <span class="nav-text">开始之前先在这里澄清一些被广泛误解的理论并解释一些常见问题</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#用-logouthook-模拟-nvram-并为-opencore-指定默认引导项"><span class="nav-number">4.2.2.</span> <span class="nav-text">用 LogoutHook 模拟 NVRAM 并为 OpenCore 指定默认引导项</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#修复-opencore-引导界面的显示问题"><span class="nav-number">4.3.</span> <span class="nav-text">修复 OpenCore 引导界面的显示问题</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#在-opencore-中启用-filevault-文件保险箱"><span class="nav-number">4.4.</span> <span class="nav-text">在 OpenCore 中启用 FileVault 文件保险箱</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#修改-opencore-引导界面的启动项名称"><span class="nav-number">4.5.</span> <span class="nav-text">修改 OpenCore 引导界面的启动项名称</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#附录1-opencore-支持的内核驱动-kext-及其用途"><span class="nav-number">5.</span> <span class="nav-text">附录[1] – OpenCore 支持的内核驱动 (Kext) 及其用途</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#有线网卡"><span class="nav-number">5.1.</span> <span class="nav-text">有线网卡</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#wi-fi-和蓝牙"><span class="nav-number">5.2.</span> <span class="nav-text">Wi-Fi 和蓝牙</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#键盘-鼠标和触摸设备"><span class="nav-number">5.3.</span> <span class="nav-text">键盘, 鼠标和触摸设备</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#显卡和声卡"><span class="nav-number">5.4.</span> <span class="nav-text">显卡和声卡</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#cpu-和-smc"><span class="nav-number">5.5.</span> <span class="nav-text">CPU 和 SMC</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#usb-和-其它接口"><span class="nav-number">5.6.</span> <span class="nav-text">USB 和 其它接口</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#其它驱动"><span class="nav-number">5.7.</span> <span class="nav-text">其它驱动</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#附录2-uefi-驱动-efi-及其用途"><span class="nav-number">6.</span> <span class="nav-text">附录[2] – UEFI 驱动 (.efi) 及其用途</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#opencore-支持的-uefi-驱动"><span class="nav-number">6.1.</span> <span class="nav-text">OpenCore 支持的 UEFI 驱动</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#opencore-不兼容的-uefi-驱动"><span class="nav-number">6.2.</span> <span class="nav-text">OpenCore 不兼容的 UEFI 驱动</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#附录3-常用内核引导标识符合集"><span class="nav-number">7.</span> <span class="nav-text">附录[3] – 常用内核引导标识符合集</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#参考及引用"><span class="nav-number">8.</span> <span class="nav-text">参考及引用</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#鸣谢"><span class="nav-number">9.</span> <span class="nav-text">鸣谢</span></a></li></ol></div></div></div></div></aside></div></main><footer id="footer" class="footer"><div class="footer-inner"><div class="copyright"><a href="http://www.beian.miit.gov.cn" rel="noopener" target="_blank">辽ICP备15000696号-3 </a>&copy; 2016 – <span itemprop="copyrightYear">2025</span> <span class="with-love" id="animate"><i class="fa fa-apple"></i> </span><span class="author" itemprop="copyrightHolder">黑果小兵</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-area-chart"></i> </span><span title="站点总字数">862k</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-coffee"></i> </span><span title="站点阅读时长">26:06</span></div><div class="busuanzi-count"><script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><span class="site-uv" title="总访客量"><i class="fa fa-user"></i> <span class="busuanzi-value" id="busuanzi_value_site_uv"></span> </span><span class="site-pv" title="总访问量"><i class="fa fa-eye"></i> <span class="busuanzi-value" id="busuanzi_value_site_pv"></span></span></div></div></footer><div class="back-to-top"><i class="fa fa-arrow-up"></i> <span id="scrollpercent"><span>0</span>%</span></div></div><script>"[object Function]"!==Object.prototype.toString.call(window.Promise)&&(window.Promise=null)</script><script src="/lib/jquery/index.js?v=2.1.3"></script><script src="/lib/velocity/velocity.min.js?v=1.2.1"></script><script src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script><script src="https://fastly.jsdelivr.net/npm/@fancyapps/fancybox@3.2.5/dist/jquery.fancybox.min.js"></script><script src="//fastly.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js"></script><script src="/js/src/utils.js?v=6.6.0"></script><script src="/js/src/motion.js?v=6.6.0"></script><script src="/js/src/scrollspy.js?v=6.6.0"></script><script src="/js/src/post-details.js?v=6.6.0"></script><script src="/js/src/bootstrap.js?v=6.6.0"></script><script src="//fastly.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.min.js"></script><link rel="stylesheet" href="//fastly.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.css"><script src="//fastly.jsdelivr.net/npm/js-md5@0.7.3/src/md5.min.js"></script><script>var gitalk=new Gitalk({clientID:"0da3e792a21a77938da6",clientSecret:"4d2869563000629ee6dbed48fbbf878aea151cb6",repo:"daliansky.github.io",owner:"daliansky",admin:["daliansky"],id:md5(location.pathname),distractionFreeMode:"true",proxy:"https://gitalk.daliansky.workers.dev/?https://github.com/login/oauth/access_token"});gitalk.render("gitalk-container")</script><script>// Popup Window;
    var isfetched = false;
    var isXml = true;
    // Search DB path;
    var search_path = "search.xml";
    if (search_path.length === 0) {
      search_path = "search.xml";
    } else if (/json$/i.test(search_path)) {
      isXml = false;
    }
    var path = "/" + search_path;
    // monitor main search box;

    var onPopupClose = function (e) {
      $('.popup').hide();
      $('#local-search-input').val('');
      $('.search-result-list').remove();
      $('#no-result').remove();
      $(".local-search-pop-overlay").remove();
      $('body').css('overflow', '');
    }

    function proceedsearch() {
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay"></div>')
        .css('overflow', 'hidden');
      $('.search-popup-overlay').click(onPopupClose);
      $('.popup').toggle();
      var $localSearchInput = $('#local-search-input');
      $localSearchInput.attr("autocapitalize", "none");
      $localSearchInput.attr("autocorrect", "off");
      $localSearchInput.focus();
    }

    // search function;
    var searchFunc = function(path, search_id, content_id) {
      'use strict';

      // start loading animation
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay">' +
          '<div id="search-loading-icon">' +
          '<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>' +
          '</div>' +
          '</div>')
        .css('overflow', 'hidden');
      $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center');

      

      $.ajax({
        url: path,
        dataType: isXml ? "xml" : "json",
        async: true,
        success: function(res) {
          // get the contents from search data
          isfetched = true;
          $('.popup').detach().appendTo('.header-inner');
          var datas = isXml ? $("entry", res).map(function() {
            return {
              title: $("title", this).text(),
              content: $("content",this).text(),
              url: $("url" , this).text()
            };
          }).get() : res;
          var input = document.getElementById(search_id);
          var resultContent = document.getElementById(content_id);
          var inputEventFunction = function() {
            var searchText = input.value.trim().toLowerCase();
            var keywords = searchText.split(/[\s\-]+/);
            if (keywords.length > 1) {
              keywords.push(searchText);
            }
            var resultItems = [];
            if (searchText.length > 0) {
              // perform local searching
              datas.forEach(function(data) {
                var isMatch = false;
                var hitCount = 0;
                var searchTextCount = 0;
                var title = data.title.trim();
                var titleInLowerCase = title.toLowerCase();
                var content = data.content.trim().replace(/<[^>]+>/g,"");
                
                var contentInLowerCase = content.toLowerCase();
                var articleUrl = decodeURIComponent(data.url);
                var indexOfTitle = [];
                var indexOfContent = [];
                // only match articles with not empty titles
                if(title != '') {
                  keywords.forEach(function(keyword) {
                    function getIndexByWord(word, text, caseSensitive) {
                      var wordLen = word.length;
                      if (wordLen === 0) {
                        return [];
                      }
                      var startPosition = 0, position = [], index = [];
                      if (!caseSensitive) {
                        text = text.toLowerCase();
                        word = word.toLowerCase();
                      }
                      while ((position = text.indexOf(word, startPosition)) > -1) {
                        index.push({position: position, word: word});
                        startPosition = position + wordLen;
                      }
                      return index;
                    }

                    indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
                    indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
                  });
                  if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
                    isMatch = true;
                    hitCount = indexOfTitle.length + indexOfContent.length;
                  }
                }

                // show search results

                if (isMatch) {
                  // sort index by position of keyword

                  [indexOfTitle, indexOfContent].forEach(function (index) {
                    index.sort(function (itemLeft, itemRight) {
                      if (itemRight.position !== itemLeft.position) {
                        return itemRight.position - itemLeft.position;
                      } else {
                        return itemLeft.word.length - itemRight.word.length;
                      }
                    });
                  });

                  // merge hits into slices

                  function mergeIntoSlice(text, start, end, index) {
                    var item = index[index.length - 1];
                    var position = item.position;
                    var word = item.word;
                    var hits = [];
                    var searchTextCountInSlice = 0;
                    while (position + word.length <= end && index.length != 0) {
                      if (word === searchText) {
                        searchTextCountInSlice++;
                      }
                      hits.push({position: position, length: word.length});
                      var wordEnd = position + word.length;

                      // move to next position of hit

                      index.pop();
                      while (index.length != 0) {
                        item = index[index.length - 1];
                        position = item.position;
                        word = item.word;
                        if (wordEnd > position) {
                          index.pop();
                        } else {
                          break;
                        }
                      }
                    }
                    searchTextCount += searchTextCountInSlice;
                    return {
                      hits: hits,
                      start: start,
                      end: end,
                      searchTextCount: searchTextCountInSlice
                    };
                  }

                  var slicesOfTitle = [];
                  if (indexOfTitle.length != 0) {
                    slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle));
                  }

                  var slicesOfContent = [];
                  while (indexOfContent.length != 0) {
                    var item = indexOfContent[indexOfContent.length - 1];
                    var position = item.position;
                    var word = item.word;
                    // cut out 100 characters
                    var start = position - 20;
                    var end = position + 80;
                    if(start < 0){
                      start = 0;
                    }
                    if (end < position + word.length) {
                      end = position + word.length;
                    }
                    if(end > content.length){
                      end = content.length;
                    }
                    slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent));
                  }

                  // sort slices in content by search text's count and hits' count

                  slicesOfContent.sort(function (sliceLeft, sliceRight) {
                    if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
                      return sliceRight.searchTextCount - sliceLeft.searchTextCount;
                    } else if (sliceLeft.hits.length !== sliceRight.hits.length) {
                      return sliceRight.hits.length - sliceLeft.hits.length;
                    } else {
                      return sliceLeft.start - sliceRight.start;
                    }
                  });

                  // select top N slices in content

                  var upperBound = parseInt('1');
                  if (upperBound >= 0) {
                    slicesOfContent = slicesOfContent.slice(0, upperBound);
                  }

                  // highlight title and content

                  function highlightKeyword(text, slice) {
                    var result = '';
                    var prevEnd = slice.start;
                    slice.hits.forEach(function (hit) {
                      result += text.substring(prevEnd, hit.position);
                      var end = hit.position + hit.length;
                      result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>';
                      prevEnd = end;
                    });
                    result += text.substring(prevEnd, slice.end);
                    return result;
                  }

                  var resultItem = '';

                  if (slicesOfTitle.length != 0) {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>";
                  } else {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + title + "</a>";
                  }

                  slicesOfContent.forEach(function (slice) {
                    resultItem += "<a href='" + articleUrl + "'>" +
                      "<p class=\"search-result\">" + highlightKeyword(content, slice) +
                      "...</p>" + "</a>";
                  });

                  resultItem += "</li>";
                  resultItems.push({
                    item: resultItem,
                    searchTextCount: searchTextCount,
                    hitCount: hitCount,
                    id: resultItems.length
                  });
                }
              })
            };
            if (keywords.length === 1 && keywords[0] === "") {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x" /></div>'
            } else if (resultItems.length === 0) {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x" /></div>'
            } else {
              resultItems.sort(function (resultLeft, resultRight) {
                if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
                  return resultRight.searchTextCount - resultLeft.searchTextCount;
                } else if (resultLeft.hitCount !== resultRight.hitCount) {
                  return resultRight.hitCount - resultLeft.hitCount;
                } else {
                  return resultRight.id - resultLeft.id;
                }
              });
              var searchResultList = '<ul class=\"search-result-list\">';
              resultItems.forEach(function (result) {
                searchResultList += result.item;
              })
              searchResultList += "</ul>";
              resultContent.innerHTML = searchResultList;
            }
          }

          if ('auto' === 'auto') {
            input.addEventListener('input', inputEventFunction);
          } else {
            $('.search-icon').click(inputEventFunction);
            input.addEventListener('keypress', function (event) {
              if (event.keyCode === 13) {
                inputEventFunction();
              }
            });
          }

          // remove loading animation
          $(".local-search-pop-overlay").remove();
          $('body').css('overflow', '');

          proceedsearch();
        }
      });
    }

    // handle and trigger popup window;
    $('.popup-trigger').click(function(e) {
      e.stopPropagation();
      if (isfetched === false) {
        searchFunc(path, 'local-search-input', 'local-search-result');
      } else {
        proceedsearch();
      };
    });

    $('.popup-btn-close').click(onPopupClose);
    $('.popup').click(function(e){
      e.stopPropagation();
    });
    $(document).on('keyup', function (event) {
      var shouldDismissSearchPopup = event.which === 27 &&
        $('.search-popup').is(':visible');
      if (shouldDismissSearchPopup) {
        onPopupClose();
      }
    });</script><script src="/js/src/js.cookie.js?v=6.6.0"></script><script src="/js/src/scroll-cookie.js?v=6.6.0"></script><script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({pluginRootPath:"live2dw/",pluginJsPath:"lib/",pluginModelPath:"assets/",model:{scale:1.2,hHeadPos:.5,vHeadPos:.618,jsonPath:"/live2dw/assets/tororo.model.json"},display:{superSample:2,width:150,height:300,position:"right",hOffset:0,vOffset:-20},mobile:{show:!1,scale:.5},react:{opacityDefault:.7,opacityOnHover:.2},log:!1,tagMode:!1})</script></body></html>